Найти - Пользователи
Полная версия: Как преобразовать переменную в метод?
Начало » Python для новичков » Как преобразовать переменную в метод?
1
KindlySnake
Привет всем местным обитателям. Помогите разобраться.

Разбираюсь с модулем ccxt для получения информации о торгах на криптовалютных биржах и столкнулся с неизвестной мне проблемой, которую не могу решить самостоятельно.

Имеется функция get_market_pairs(), которая принимает строку с названием биржи. Затем в теле функции инициализируется переменная exchanges, которая благодаря встроенному в ccxt методу exchanges получает список всех поддерживаемых бирж и затем делает проверку на наличие указанной нами биржи в этом списке.

 def get_market_pairs(exchange):
	exchanges = ccxt.exchanges
	if not exchange in exchanges:
		return "Exchange Not Found"

С этим я справился, но завис в следующем моменте:
Теперь мне нужно получить объект для работы с запрашиваемой мною биржей. В туториалах по ccxt это делается примерно так:

 poloniex = ccxt.poloniex()

Так вот… Как мне подставить в ccxt.poloniex() мою переменную вместо ‘poloniex’ и вызвать ее, как метод?

Понимаю, что проблема скорее всего тривиальная, но я зашел в тупик. Надеюсь на вашу помощь.
KindlySnake
Однако, многовато лишнего я написал. Вот более краткое объяснение:

Можно ли как-нибудь исполнить что-то подобное, учитывая, что параметром ‘method_name’ мы передаем всего лишь строку?

 import module
def function(method_name):
    module.method_name()
AD0DE412
вы что, просто хотите изменить имя функции? если да то ..
 from module import func as my_name
или
 import module 
my_name = module.func
KindlySnake
AD0DE412
Я хочу таким образом выбирать метод, который будет срабатывать в функции. Т.е. передавать имя метода в виде строки, чтобы потом из функции вызывался метод с заданным мною названием.
AD0DE412
https://pythonz.net/references/named/exec/
ps если подошло, опишите че по чем, я то же учусь )
Rodegast
> Можно ли как-нибудь исполнить что-то подобное, учитывая, что параметром ‘method_name’ мы передаем всего лишь строку?

 >>> class A:
...     def metod(self):
...         return 1
...
>>> a = A()
>>> getattr(a, "metod")()
1
AD0DE412
прикольно
я правильно понимаю если
 ...
    def metod(self, one, two):
         return one, two
# то
a = A()
 getattr(a, "metod")(one, two)
конечно в классе должен быть __init__(self, one, two)

KindlySnake
Rodegast
Спасибо! Все-таки решение оказалось для меня не таким уж тривиальным, ибо про getattr я и вовсе не знал. Пришлось попотеть еще и над ответом.

Но, результат достигнут!
@cckyi_boxxx
если я правильно понял то вам getattr не требуется, все проще, переменную приравниваете к функции но не ставите скобок, т.е. не вызываете функцию, и тогда если вызвать переменную - выполнится функция

 class demo:
    def func(self):
        print('lol')
demo_obj = demo()
var1 = demo_obj.func
var1()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB