In Python esiste un modo per associare un metodo non associato senza chiamarlo?Python: associare un metodo non associato?
Sto scrivendo un programma wxPython, e per una certa classe ho deciso che sarebbe bello raggruppare i dati di tutti i miei pulsanti insieme come una lista a livello di classe di tuple, in questo modo:
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)
Il problema è che, poiché tutti i valori di handler
sono metodi non associati, il mio programma esplode in una fiammata spettacolare e piango.
Cercavo online una soluzione a quello che sembra essere un problema relativamente semplice e risolvibile. Purtroppo non ho trovato nulla. In questo momento, sto usando functools.partial
per aggirare questo problema, ma qualcuno sa se esiste un modo pulito, salutare, Python per legare un metodo non associato a un'istanza e continuare a passarlo senza chiamarlo?
Definire "metodo non legato" – Christopher
@Christopher - Un metodo che non è legato al campo di applicazione l'oggetto è stato risucchiato da, quindi bisogna passare di sé in modo esplicito. –