Достать название функции из словаря и вызвать ее
Есть словарь, в котором есть название функции btnnewgame
methods = {
'btn_newGame': 'btnewgame',
}
Есть функция
def btnewgame(self):
self.bank.setText('100000')
self.pr_price_1.setText(str(random.randrange(500,1000)))
self.pr_price_2.setText(str(random.randrange(500, 1000)))
self.pr_price_3.setText(str(random.randrange(500, 1000)))
self.pr_price_4.setText(str(random.randrange(500, 1000)))
Как мне вызвать эту функцию, взяв значение из словаря по ключу?
Пробовал method["stop-service"]() не помогло
Ответы (2 шт):
Автор решения: Сергей Кох
→ Ссылка
Убрать надо кавычки в словаре.
def btnewgame():
print("privet")
methods = {
'btn_newGame': btnewgame
}
methods['btn_newGame']()
Автор решения: splash58
→ Ссылка
поскольку вы храните в словаре имя, а не ссылку на функцию, можно сделать как-то так
def btnewgame():
print('btnewgame')
methods = {
'btn_newGame': 'btnewgame',
}
locals()[methods['btn_newGame']]() # btnewgame
а если нужно вызвать метод класса, то чуть посложнее
class A:
def __init__(self, i):
self.i = i
def btnewgame(self):
print(self.i, 'btnewgame')
methods = {
'btn_newGame': 'btnewgame',
}
b = A(1)
getattr(b, methods['btn_newGame'])() # 1 btnewgame