ホームページ > バックエンド開発 > Python チュートリアル > 辞書エントリなどの動的プロパティをクラスに追加するにはどうすればよいですか?

辞書エントリなどの動的プロパティをクラスに追加するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-12 10:55:03
オリジナル
784 人が閲覧しました

How to Add Dynamic Properties to Classes like Dictionary Entries?

クラスへの動的プロパティの追加

モック クラスを使用してデータベースの結果セットをシミュレートする過程で、動的プロパティをどのように割り当てるかという課題が生じます。辞書のプロパティに似たプロパティをインスタンスに追加します。これには、特定の値を持つ属性のように動作するプロパティを作成することが含まれます。

当初、有望なアプローチには、

setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))
ログイン後にコピー

を使用してプロパティを割り当てることが含まれていました。しかし、これにより、望ましい動作ではなくプロパティ オブジェクトが生成されます。

解決策は、個々のインスタンスではなく、クラス自体にプロパティを追加することです。その仕組みは次のとおりです。

class Foo(object):
    pass

foo = Foo()
foo.a = 3
Foo.b = property(lambda self: self.a + 1)
print(foo.b)  # Prints 4
ログイン後にコピー

この例では、プロパティ記述子を使用して、クラス Foo にプロパティ b を追加します。 foo.b にアクセスすると、Python は記述子の __get__ メソッドを呼び出し、クラス インスタンスを引数として渡します。次に、__get__ メソッドは、self.a 1 として計算されるプロパティの値を返します。

プロパティは、属性のカスタム動作を定義する便利な方法を提供し、Python の OO システムの仕組みを効果的に公開します。

以上が辞書エントリなどの動的プロパティをクラスに追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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