En Python, existe-t-il un moyen de lier une méthode indépendante sans l'appeler?
J'écris un programme wxPython, et pour une certaine classe, j'ai décidé que ce serait bien de regrouper les données de tous mes boutons sous forme de liste de tuples au niveau de la classe, comme ceci:
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)
Le problème est que, puisque toutes les valeurs de handler
sont des méthodes non liées, mon programme explose dans une flambée spectaculaire et je pleure.
Je cherchais en ligne une solution à ce qui semble être un problème relativement simple et résoluble. Malheureusement, je n'ai rien trouvé. En ce moment, j'utilise functools.partial
pour contourner ce problème, mais est-ce que quelqu'un sait s'il existe une manière pythonique, saine et propre de lier une méthode non liée à une instance et de continuer à la transmettre sans l'appeler?