Gibt es in Python eine Möglichkeit, eine ungebundene Methode zu binden, ohne sie aufzurufen?
Ich schreibe ein wxPython-Programm und für eine bestimmte Klasse habe ich beschlossen, dass es schön wäre, die Daten aller meiner Schaltflächen als Liste von Tupeln auf Klassenebene zu gruppieren, wie folgt:
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)
Das Problem ist, da alle Werte von handler
ungebundenen Methoden sind, explodiert mein Programm in einem spektakulären Feuer und ich weine.
Ich habe mich online nach einer Lösung umgesehen, die ein relativ einfaches, lösbares Problem sein sollte. Leider konnte ich nichts finden. Im Moment arbeite ich daran functools.partial
, das zu umgehen, aber weiß jemand, ob es eine saubere, gesunde und pythonische Methode gibt, eine ungebundene Methode an eine Instanz zu binden und sie weiterzugeben, ohne sie aufzurufen?