Di Python, apakah ada cara untuk mengikat metode tidak terikat tanpa memanggilnya?
Saya menulis program wxPython, dan untuk kelas tertentu saya memutuskan akan lebih baik untuk mengelompokkan data dari semua tombol saya bersama-sama sebagai daftar tupel tingkat kelas, seperti:
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)
Masalahnya adalah, karena semua nilai dari handler
metode tidak terikat, program saya meledak dalam kobaran api yang spektakuler dan saya menangis.
Saya sedang mencari solusi online untuk apa yang tampaknya merupakan masalah yang relatif mudah dan dapat dipecahkan. Sayangnya saya tidak dapat menemukan apa pun. Saat ini, saya menggunakan functools.partial
untuk mengatasi ini, tetapi apakah ada yang tahu jika ada cara Pythonic yang bersih, sehat, untuk mengikat metode tidak terikat ke sebuah instance dan terus menyebarkannya tanpa memanggilnya?