ホームページ  >  記事  >  バックエンド開発  >  Python で非バインドメソッドをインスタンスにバインドするにはどうすればよいですか?

Python で非バインドメソッドをインスタンスにバインドするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 23:05:31865ブラウズ

How to Bind Unbound Methods to Instances in Python?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。