Python でクラスにプロパティを動的に追加するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-09 06:44:02
オリジナル
381 人が閲覧しました

How do you Dynamically Add Properties to Classes in Python?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート