@property
デコレータはメソッド呼び出しになるためのプロパティを担当しています。
@property
広くエラーの可能性を低減するプログラムが実行されているように、パラメータの必要なチェックを確保しつつ、ショートコードを書くために、発信者を許可、クラスの定義に使用されます
クラスの学生(オブジェクト): @propertyの デフスコア(自己): 返すself._score @ score.setter デフ得点(自己、値): 場合 ではない(値、INT)でisinstance: 引き上げるとValueErrorを(' !スコアは整数でなければなりません' ) であれば値が<0 または値> 100 : 引き上げるとValueError(' !スコアをしなければならない100〜0の間' ) self._score =値
プロパティのゲッターメソッドになるためには、単に追加し@property
、この時点でそれを@property
順番に別のデコレータを作成した@score.setter
、setterメソッドになるために属性を割り当てるための責任があるので、我々はプロパティコントロールの動作を持っています。
Sは、= >>> 学生() >>> s.score = 60 #OK、実際の変換はs.set_score(60)である >>> s.score #OK、実際の変換は(s.get_scoreある) 60 >>> S = 9999 .score トレースバック(最新のラストコール): ... とValueError:0 BETWEENスコアMUST〜100!
あなたは、読み取り専用属性を定義するのみゲッターメソッドを定義し、setterメソッドは、読み取り専用のプロパティです定義していないことができます。
クラスの学生(オブジェクト): @propertyの デフ誕生(自己): リターンself._birthの @のbirth.setterの デフ誕生(自己、値): self._birth = 値 @propertyの デフ年齢(自己): リターン 2015 - self._birth
上記birth
読み書きプロパティであり、そしてage
ため、読み取り専用プロパティであるage
によるとbirth
、現在時刻を算出します。