Как использовать строку в качестве метода

Как использовать строку в качестве метода

05.04.2023
355
Как использовать строку в качестве имени метода на примере библиотеки ccxt.

Например, у вас есть код:

# Создаем объекты, представляющие различные биржи
crypto_exchange_1 = ccxt.binance() # создаем объект, представляющий биржу Binance
crypto_exchange_2 = ccxt.huobi() # создаем объект, представляющий биржу Huobi
crypto_exchange_3 = ccxt.kraken() # создаем объект, представляющий биржу Kraken

Возможно, вы хотите узнать, можно ли передавать список методов (бирж) в цикл for и заменять переменные на основе этих методов. Такой подход может быть полезен, если у вас есть множество методов, которые необходимо вызывать, и вы хотите сократить количество кода.

Да, это возможно, используя функцию getattr(). Эта функция возвращает значение атрибута объекта по его имени. В данном случае мы можем передать имя метода в виде строки и получить соответствующий метод.

Вот пример, как это можно сделать:

# Создаем список с именами методов (бирж)
exchanges = ['binance', 'huobi', 'kraken']
for exchange in exchanges: # перебираем список бирж
    # Получаем метод из модуля ccxt по его имени
    method = getattr(ccxt, exchange) # получаем метод из модуля ccxt по имени биржи
    # Вызываем метод и сохраняем его в переменной crypto_exchange
    crypto_exchange = method() # вызываем метод и сохраняем его в переменной crypto_exchange
    # Ваш код здесь

В этом примере мы создаем список exchanges, содержащий имена методов (бирж), которые мы хотим использовать. Затем мы перебираем этот список в цикле for и используем функцию getattr() для получения метода из модуля ccxt. Затем мы вызываем полученный метод и сохраняем его в переменной crypto_exchange.

Теперь вы можете использовать crypto_exchange в вашем коде. Например, вы можете получить информацию о балансе вашего аккаунта на каждой из бирж:

for exchange in exchanges: # перебираем список бирж
    method = getattr(ccxt, exchange) # получаем метод из модуля ccxt по имени биржи
    crypto_exchange = method() # вызываем метод и сохраняем его в переменной crypto_exchange
    balance = crypto_exchange.fetch_balance() # получаем баланс на бирже
    print(exchange, balance) # выводим имя биржи и баланс

Заключение

Такой подход может быть полезен, если у вас есть множество методов, которые необходимо вызывать, и вы хотите сократить количество кода.