Pythonでは、バインドされていないメソッドを呼び出さずにバインドする方法はありますか?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定義 - あなたが明示的に自己を渡すために持っているので、それはから吸い込まれたオブジェクトの範囲にバインドされていない方法を。 –