Trong Python, có cách nào để liên kết một phương thức không liên kết mà không gọi nó không?
Tôi đang viết một chương trình wxPython và đối với một lớp nhất định, tôi đã quyết định sẽ rất tốt khi nhóm dữ liệu của tất cả các nút của mình thành một danh sách các bộ dữ liệu cấp độ, 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
các phương thức không liên kết, chương trình của tôi bùng nổ trong một ngọn lửa ngoạn mục và tôi khóc.
Tôi đã tìm kiếm trên mạng một 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 liệu có một cách Pythonic sạch sẽ, lành mạnh để liên kết một phương thức không liên kết với một thể hiện và tiếp tục truyền qua nó mà không gọi nó không?