Trong Python, có cách nào để ràng buộc một phương thức không liên kết mà không gọi nó?Python: Liên kết một phương thức chưa được gửi?
Tôi đang viết một chương trình wxPython, và cho một lớp nào đó tôi quyết định nó muốn được tốt đẹp để nhóm dữ liệu của tất cả các nút của tôi với nhau như một danh sách lớp cấp của các bộ, như vậy:
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)
Vấn đề là, vì tất cả các giá trị của handler
là các phương pháp không liên kết, chương trình của tôi phát nổ trong một ngọn lửa ngoạn mục và tôi khóc.
Tôi đang tìm kiếm trực tuyến giải pháp cho những gì có vẻ như là một vấn đề tương đối đơn giản, có thể giải quyết được. Thật không may tôi không thể tìm thấy bất cứ điều gì. Ngay bây giờ, tôi đang sử dụng functools.partial
để giải quyết vấn đề này, nhưng có ai biết nếu có một cảm giác sạch sẽ, khỏe mạnh, Pythonic để liên kết một phương pháp không ràng buộc với một cá thể và tiếp tục truyền xung quanh mà không gọi nó?
Xác định "phương pháp không ràng buộc" – Christopher
@Christopher - Một phương pháp mà không bị ràng buộc với phạm vi của đối tượng đó được hút từ, vì vậy bạn phải vượt qua tự một cách rõ ràng. –