ホームページ >バックエンド開発 >Python チュートリアル >Pythonのオブジェクトインスタンスにメソッドを動的に追加する方法は?
Pythonのオブジェクトインスタンスにメソッドを動的に追加することは、元のクラス定義を変更せずに可能です。これは、主にsetattr()
関数を使用して達成されます。 setattr()
3つの引数を取ります:オブジェクト、属性の名前(メソッドの名前になります)、値(メソッド自体になります)。 メソッド自体は関数である必要があります。
例は次のとおりです。この例では、関数を定義します。
この関数を<code class="python">class MyClass: def __init__(self, value): self.value = value obj = MyClass(10) def new_method(self): print(f"The value is: {self.value}") setattr(obj, 'my_new_method', new_method) obj.my_new_method() # Output: The value is: 10</code>インスタンスに
名前を付けたメソッドとして追加します。 重要なことに、new_method
クラスは変更されていません。このメソッドは、特定のインスタンスsetattr()
でのみ使用できます。 個別にmy_new_method
に適用されない限り、obj
の他のインスタンスはこの方法を持っていません。MyClass
obj
Pythonオブジェクトに機能を追加するときにクラスの継承を使用することを避けるにはどうすればよいですか?MyClass
setattr()
クラスの継承は機能性を拡張するための強力なツールですが、特に複雑な追加を避けるために、特にダイナミックな追加を避けるときに、常に最良のアプローチではありません。 機能を追加するときの継承を避けるためのいくつかの選択肢があります:
構成:
setattr()
以上がPythonのオブジェクトインスタンスにメソッドを動的に追加する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。