Я пытаюсь использовать значение переменной, которая является строкой, в качестве аргумента, и я получаю ошибку "Str" не вызывается ". Я не использовал str в качестве имени переменной, я могу сделать кодработать с eval
, однако, я прочитал страшные предупреждения о eval
, поэтому я не уверен, что делать. Мой код ниже.
from time import sleep
from binance.client import Client
from binance.websockets import BinanceSocketManager
class s33():
def __init__(self):
self.client = Client("", "")
self.bm = BinanceSocketManager(self.client)
def process_trade_message(self, message):
global count, conn_key
print(count)
if count >= 10:
print('closing socket')
# use either stop_socket or close, or both
self.bm.stop_socket(conn_key)
self.bm.close()
# reset the count
count = 0
def go(self, sockb):
global count, conn_key
print(sockb['1'])
sock = 'self.bm.'+sockb['1']
print(sock)
count = 0
conn_key = sock(self.process_trade_message)
self.bm.start()
if __name__ == '__main__':
while True:
s = s33()
socka = {'1':'start_miniticker_socket'}
s.go(socka)
sleep(20)
print('sleeping')
Я читал, люди рекомендуют использовать dict, такЯ передал dict как аргумент arg и попытался извлечь строку из функции, как показано ниже. Я попытался извлечь строку и передать ее как аргумент функции. s.go(socka['1']
, я попытался передать только переменнуюкак аргумент, socka = 'start_miniticker_socket'
, и я могу заставить это работать, если я использую eval('self.bm'+socka)
. Я безуспешно пробовал знак процента. Не уверен, как это сделать без использования eval. Я все еще довольно нов и не могу найтиАльтернативный ответ после нескольких часов поиска, который работает. Любая помощь будет оценена.