В 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
, чтобы обойти это, но кто-нибудь знает, есть ли чистый, здоровый, путинский способ связать несвязанный метод с экземпляром и продолжить его, не называя его?