Уведомления

Группа в Telegram: @pythonsu

#1 Июль 7, 2019 13:30:27

KindlySnake
Зарегистрирован: 2019-07-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

Привет всем местным обитателям. Помогите разобраться.

Разбираюсь с модулем 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 (Июль 7, 2019 14:48:04)

Офлайн

#2 Июль 7, 2019 18:17:16

KindlySnake
Зарегистрирован: 2019-07-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

Однако, многовато лишнего я написал. Вот более краткое объяснение:

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

 import module
def function(method_name):
    module.method_name()

Отредактировано KindlySnake (Июль 7, 2019 18:18:32)

Офлайн

#3 Июль 7, 2019 19:06:58

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

вы что, просто хотите изменить имя функции? если да то ..

 from module import func as my_name
или
 import module 
my_name = module.func



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 7, 2019 19:26:20)

Офлайн

#4 Июль 7, 2019 19:41:29

KindlySnake
Зарегистрирован: 2019-07-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

AD0DE412
Я хочу таким образом выбирать метод, который будет срабатывать в функции. Т.е. передавать имя метода в виде строки, чтобы потом из функции вызывался метод с заданным мною названием.

Офлайн

#5 Июль 7, 2019 20:09:27

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

https://pythonz.net/references/named/exec/
ps если подошло, опишите че по чем, я то же учусь )



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 7, 2019 20:12:12)

Офлайн

#6 Июль 7, 2019 20:18:07

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2849
Репутация: +  186  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

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

 >>> class A:
...     def metod(self):
...         return 1
...
>>> a = A()
>>> getattr(a, "metod")()
1



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Июль 7, 2019 20:38:34

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

прикольно
я правильно понимаю если

 ...
    def metod(self, one, two):
         return one, two
# то
a = A()
 getattr(a, "metod")(one, two)
конечно в классе должен быть __init__(self, one, two)



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 7, 2019 21:01:47)

Офлайн

#8 Июль 8, 2019 04:03:22

KindlySnake
Зарегистрирован: 2019-07-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

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

Но, результат достигнут!

Офлайн

#9 Июль 9, 2019 03:54:50

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

Как преобразовать переменную в метод?

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

 class demo:
    def func(self):
        print('lol')
demo_obj = demo()
var1 = demo_obj.func
var1()



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version