属性のgetおよびsetメソッドで置換A、
以下のように従来のgetおよびsetメソッドは、次のとおりです。
クラスOldResistor(): デフ __init__ (自己、オーム): セルフ。__ohms = オーム デフget_ohms(自己): 戻り値の自己。__ohms デフset_ohms(自己、オーム): セルフ。__ohms = オーム なら __name__ == ' __main__ ' : R0 = OldResistor(50e3 ) プリント(r0.get_ohms()) r0.set_ohms( 10E3 ) プリント(r0.get_ohms())
@propertyデコレータゲッターとセッターメソッドの仕事
クラス抵抗(): DEF __init__ (セルフ、オーム): self.ohms = オーム self.voltage = 0 self.current = 0 クラスVolResistor(抵抗): DEF __init__ (セルフ、オーム): スーパー()__init__(オーム) #は、親クラスの変数を継承 セルフ。__vol = 100個の #最初__変数内部変数が外側で参照することができないよう @Propertyの #ゲッターセット電圧特性の DEFの電圧(セルフ): リターン。自己__vol @ voltage.setter DEF :電圧(自己、電圧) セルフ。__vol = 電圧 self.current =セルフ。__vol / self.ohms IF __name__ == ' __main__ ' : R1 =抵抗(50e3 ) r1.ohms = 10E3 #パブリックプロパティ = 5E3 + r1.ohms プリント(r1.ohms) R2 = VolResistor(10 ) 印刷(r2.voltage) #のゲッター性、電圧セッターメソッドを実行しない、属性は現在更新されていない印刷 (r2.current)を r2.voltage= 100 #とき電圧特性割当て、電圧セッターメソッドが実行され、更新現在のプロパティ プリント(r2.current)
第二に、代わりに@property性質が再構築を検討
パス
第三には、記述子は@propertyを取る方法を書き換える必要です
__get__ __set__
四、__ __ GETATTR、__ __のgetAttribute、__ SETATTR _需要創出のプロパティ
パス
五、元类
__新しい__
パス