В Python существует ли способ связать несвязанный метод без его вызова?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 способ связать несвязанный метод с экземпляром и продолжить передачу его без его вызова?
Определение «несвязанный метод» – Christopher
@Christopher - метод, который не связан с областью объекта он отсасывается из, так что вы должны передать себя в явном виде. –