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

Barbara Streisand
リリース: 2024-11-14 09:17:01
オリジナル
796 人が閲覧しました

How to Dynamically Add Properties to a Python Class?

クラスにプロパティを動的に追加する方法

Python では、インスタンス プロパティを動的に作成でき、柔軟に変更できます。実行時のクラスの動作。その方法は次のとおりです。

最初に試みたアプローチは、c.ab を実際の値ではなくプロパティ オブジェクトに設定するため、間違っていました。プロパティを正しく追加するには、インスタンスではなくクラス自体を変更する必要があります。

class C(dict):
    pass

ks = ['ab', 'cd']
vs = [100, 200]

for i, k in enumerate(ks):
    # Define the property using classmethod
    setattr(C, k, property(lambda self: vs[i]))

c = C()
print(c.ab)  # Outputs 100
ログイン後にコピー

この更新されたコードでは、setattr 呼び出しをクラスメソッドとして定義し、プロパティが確実にインスタンスではなくクラスです。プロパティ内のラムダ関数は、vs リストから対応する値を返します。

プロパティを使用して動的なゲッター関数とセッター関数を定義することもでき、プロパティ処理の柔軟性が向上します。プロパティの追加はインスタンス レベルではなくクラス レベルでのみ実行できるため、クラスの動作をカスタマイズするための強力なツールとなることに注意してください。

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

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