既存の Python オブジェクトへの追加メソッドのアタッチ
Python では、通常、既存のオブジェクトのメソッドを変更することはお勧めできませんが、特定の状況では、必要かもしれません。この記事では、インスタンスの作成後にメソッドを追加する方法について説明し、関数とバインドされたメソッドの違いに焦点を当てます。
関数とバインドされたメソッドについて理解する
Python の場合、関数はバインドされていませんが、バインドされたメソッドは特定のインスタンスに関連付けられています。バインドされたメソッドが呼び出されるとき、インスタンスは最初の引数として自動的に渡されます。このバインディングは、メソッドがクラス定義で定義されているときに発生します。
クラス レベルのメソッドの更新
クラス レベルで定義されたメソッドの変更は簡単です。新しい関数をクラスのメソッド属性に割り当てるだけです:
class A: def bar(self): print("bar") A.fooFighters = fooFighters
この変更は、既存のものを含むクラスのすべてのインスタンスに適用されます。
インスタンスの追加-特定のメソッド
個々のインスタンスにメソッドをアタッチするのはより複雑です。関数をインスタンスの属性に直接割り当てるとバインドされたメソッドは作成されず、引数をゼロで呼び出すとエラーが発生します。
単一インスタンスのバインドされたメソッドを作成するには、以下の MethodType 関数を使用できます。タイプモジュール:
import types a.barFighters = types.MethodType(barFighters, a)
これで、a.barFighters() が呼び出されるとき、メソッドはインスタンスにバインドされ、追加の処理なしで呼び出すことができます。 argument.
インスタンス分離の保持
インスタンス固有のメソッドを変更しても、同じクラスの他のインスタンスには影響しないことに注意することが重要です。各インスタンスは、メソッドを含む独自の属性セットを維持します。
以上が既存の Python オブジェクトに新しいメソッドを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。