В Python есть способ связать несвязанный метод, не вызывая его?
Я пишу программу wxPython, и для определенного класса я решил, что было бы неплохо сгруппировать данные всех моих кнопок в один список кортежей на уровне класса, например:
class MyWidget(wx.Window):
buttons = [("OK", OnOK),
("Cancel", OnCancel)]
# ...
def Setup(self):
for text, handler in MyWidget.buttons:
# This following line is the problem line.
b = wx.Button(parent, label=text).Bind(wx.EVT_BUTTON, handler)
Проблема в том, что, поскольку все значения handler
являются несвязанными методами, моя программа взрывается невероятным пламенем, и я плачу.
Я искал в Интернете решение, которое, по-видимому, должно быть относительно простой и разрешимой. К сожалению, я не смог ничего найти. Прямо сейчас я использую functools.partial
, чтобы обойти это, но кто-нибудь знает, есть ли чистый, здоровый, Pythonic способ связать несвязанный метод с экземпляром и продолжить передавать его, не вызывая его?