非バインド メソッドのバインド: Python 的なアプローチ
Python では、非バインド メソッドをインスタンスにバインドしようとすると、多くの場合問題が発生することがあります。うっかり電話をかけてしまいます。この問題は、たとえば、wxPython を使用し、ボタン データをクラス レベルのタプルのリストとして整理したい場合に発生します。
導入段落で述べたように、functools.partial に依存すると回避策が提供されますが、もっとエレガントで Python 的なソリューションがあるかもしれません。幸いなことに、アンバインドされたメソッドを呼び出さずにバインドする効果的なアプローチが存在します。
Python 関数には記述子として機能する機能があり、get メソッドを呼び出すことでメソッドをバインドできるようになります。このアプローチにより、非バインド メソッドが特定のインスタンスに確実にバインドされ、予期しない呼び出しを行わずにメソッドを渡すことができます。
コード例:
# Declare an unbound method
def some_method(self):
# Method implementation here
# Bind the unbound method to an instance
instance = MyClass()
bound_method = some_method.__get__(instance, MyClass)
# Continue passing around the bound method without calling it
結論:
説明のように get メソッドを採用すると、アンバインド メソッドをインスタンスにシームレスにバインドし、アンバインド ステータスを維持できるようになります。 、そして、wxPython のボタンを操作するときに発生した問題を解決します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3