既存の Python オブジェクトへのメソッドの動的追加
クラス定義のメソッドとは異なり、Python では既存のオブジェクトにメソッドを追加することは一般的に推奨されません。ただし、これが必要なシナリオもあります。
関数とバインドされたメソッドについて理解する
Python では、関数はバインドされたメソッドとは異なります。バインドされたメソッドはインスタンスに関連付けられ、それを最初の引数としてメソッドに渡します。一方、関数はバインドされていません。
クラス属性の変更
定義を変更することで、クラスにメソッドを追加できます。
class A: def foo(self): print("foo") A.fooFighters = fooFighters # Attach the fooFighters function as a method
これにより、既存のものを含むクラス A のすべてのインスタンスが更新されますones.
インスタンスへのメソッドのアタッチ
特定のインスタンスにメソッドをアタッチするには、types.MethodType 関数を使用できます:
import types a.barFighters = types.MethodType(barFighters, a) # Bind the barFighters function to instance a
これにより、メソッドが正しくバインドされます。 instance.
制限事項
インスタンスにメソッドを動的に追加することは可能ですが、次のような制限があります。
代替手段
オブジェクトにメソッドを直接追加する代わりに、次の代替手段を検討してください。
以上がメソッドを Python オブジェクトに動的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。