파이썬에서는 언 바운드 메서드를 호출하지 않고 바인딩하는 방법이 있습니까?Python : 바인딩되지 않은 메서드 바인딩?
나는 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
을 사용하고 있지만 언 바운드 메서드를 인스턴스에 바인딩하고 호출하지 않고 계속 전달하는 깨끗한 느낌, 건강한 Python 메서드가 있다면 누구나 알 수 있습니까? 이 함수의 첫 번째 인수로 self
을 전달하여 작동
bound_handler = lambda *args, **kwargs: handler(self, *args, **kwargs)
:
는 "언 바운드 방법" – Christopher
@Christopher 정의 - 당신이 명시 적으로 자신을 통과해야하므로,이 빨려 된 개체의 범위에 바인딩되지 않은 방법. –