ใน Python มีวิธีการผูก unbound method โดยไม่ต้องเรียกมันหรือไม่?
ฉันกำลังเขียนโปรแกรม wxPython และสำหรับบางคลาสฉันคิดว่ามันเป็นการดีที่จะจัดกลุ่มข้อมูลของปุ่มทั้งหมดของฉันเข้าด้วยกันเป็นรายการทูเปิลระดับคลาสเช่น:
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)
ปัญหาคือเนื่องจากค่าทั้งหมดhandler
เป็นวิธีการที่ไม่ถูกผูกไว้โปรแกรมของฉันจึงระเบิดออกมาเป็นเปลวไฟที่งดงามและฉันก็ร้องไห้
ฉันมองหาวิธีแก้ปัญหาทางออนไลน์เกี่ยวกับสิ่งที่ดูเหมือนว่าควรจะเป็นปัญหาที่ค่อนข้างตรงไปตรงมาและแก้ไขได้ น่าเสียดายที่ไม่พบอะไรเลย ตอนนี้ฉันกำลังใช้functools.partial
เพื่อแก้ไขปัญหานี้ แต่มีใครรู้บ้างว่ามีวิธี Pythonic ที่สะอาดและมีสุขภาพดีในการผูกวิธีที่ไม่ถูกผูกไว้กับอินสแตนซ์และดำเนินการต่อโดยไม่เรียกมัน