Python での非バインド メソッドのバインド
非バインド メソッドをインスタンスにバインドすることは、Python プログラミング、特に wxPython などのフレームワークを使用する場合の一般的なタスクです。ただし、非バインド メソッドで単純に binding() メソッドを呼び出すと、エラーが発生します。
問題
非バインド メソッドをバインドすると、プログラムは失敗します。インスタンスを呼び出す必要があります。これらを呼び出さずに直接バインドすると、エラーが生成されます。
解決策
幸いなことに、この問題には 2 つの解決策があります。
使用記述子
Python の関数も記述子であり、get メソッドがあることを意味します。このメソッドを使用すると、バインドされていないメソッドをインスタンスにバインドできます。記述子を使用して非バインド メソッドをバインドするには:
bound_handler = handler.__get__(self, MyWidget)
カスタム バインディング関数の使用
または、例の binding() のようなカスタム バインド関数を使用することもできます。以下:
def bind(instance, func, as_name=None): bound_method = func.__get__(instance, instance.__class__) setattr(instance, as_name, bound_method) return bound_method
この関数を使用すると、バインドされていないメソッドをカスタム名でバインドできます。
結論
いずれかの記述子アプローチを使用します。またはカスタム バインド関数を使用すると、非バインド メソッドを呼び出すことなくバインドできるため、クリーンで保守しやすいコード構造が可能になります。
以上がPython で非バインドメソッドをインスタンスにバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。