Czy w Pythonie istnieje sposób na powiązanie niezwiązanej metody bez jej wywoływania?
Piszę program wxPython i dla pewnej klasy zdecydowałem, że fajnie byłoby zgrupować dane wszystkich moich przycisków razem jako listę krotek na poziomie klasy, na przykład:
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)
Problem w tym, że ponieważ wszystkie wartości handler
są niezwiązane z metodami, mój program wybucha spektakularnym płomieniem i płaczę.
Szukałem w Internecie rozwiązania tego, co wydaje się być stosunkowo prostym, możliwym do rozwiązania problemem. Niestety nic nie mogłem znaleźć. W tej chwili używam functools.partial
do obejścia tego problemu, ale czy ktoś wie, czy istnieje czysty, zdrowy, Pythonowy sposób powiązania niezwiązanej metody z instancją i kontynuowania przekazywania jej bez wywoływania jej?