Python での既存のオブジェクト インスタンスへのメソッドの追加
Python では、通常、既存のオブジェクトにメソッドを追加することは推奨されません (つまり、クラス定義)。ただし、必要な場合には例外がいくつかあります。
バインドされたメソッドと関数
Python では、メソッドはオブジェクト インスタンスにバインドされることで関数と区別されます。 。メソッドが呼び出されるとき、インスタンスは最初の引数として自動的に渡されます。
一方、関数は特定のインスタンスにバインドされず、適切な引数を使用して明示的に呼び出す必要があります。
クラス属性の変更
クラスのすべてのインスタンスにメソッドを追加したい場合は、次のようにすることができます。クラス定義を変更するだけです:
class A: def bar(self): print("bar") a = A() a.bar() # Output: "bar"
個々のインスタンスの変更
ただし、クラスの特定のインスタンスにメソッドを追加する必要がある場合、状況は少し複雑になります。もっと複雑です。関数はバインドされないため、インスタンス属性に直接割り当てることはできません。
def barFighters(): print("barFighters") a.barFighters = barFighters a.barFighters() # TypeError: barFighters() takes exactly 1 argument
MethodType を使用した関数のバインド
関数を適切にバインドするにはオブジェクト インスタンスに対して、types モジュールの MethodType 関数を使用できます。
import types a.barFighters = types.MethodType(barFighters, a) a.barFighters() # Output: "barFighters"
このメソッド バインディングにより、関数は呼び出されたときにインスタンスを最初の引数として呼び出されます。
以上が既存の Python オブジェクトにメソッドを追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。