クラスにプロパティを動的に追加する方法
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 サイトの他の関連記事を参照してください。