У 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
цю проблему, але хтось знає, чи існує здоровий, здоровий, пітонічний спосіб прив’язати незв'язаний метод до екземпляра і продовжувати передавати його, не викликаючи його?