Python での動的プロパティの追加
Python では、クラスへの動的プロパティの追加には特有の課題があります。最初は、setattr を使用してクラス インスタンスにプロパティを直接追加しようとします。ただし、この方法ではプロパティ オブジェクトが属性に割り当てられ、望ましい動作が無効になります。
解決策
プロパティを動的に追加するには、プロパティをクラス自体。次の例を考えてみましょう。
class Foo(object): pass foo = Foo() foo.a = 3 # Dynamically add property 'b' to class Foo.b = property(lambda self: self.a + 1) print(foo.b) # Outputs 4
記述子について
Python のプロパティは記述子を使用して実装されます。記述子は、特定のクラスの属性アクセスを処理するオブジェクトです。これらは、属性へのアクセス、設定、または削除方法を定義する get__、__set__、または __delete メソッドを持っています。
Python は、foo にアクセスするときに Foo.b.__get__(foo, Foo) を呼び出します。 b、戻り値は属性の値になります。この場合、プロパティ記述子は fget メソッドを呼び出し、インスタンスの値を渡します。
記述子としてのメソッド オブジェクト
メソッド自体は、別の種類の記述子です。 get メソッドは、呼び出し元のインスタンスを最初の引数として追加し、インスタンスに効果的にバインドします。
要約すると、Python で動的プロパティを追加するには、Python の機能を利用して、クラス自体にプロパティを追加する必要があります。記述子システム。これにより、クラスごとに属性をカスタム処理できるようになります。
以上がPython でクラスにプロパティを動的に追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。