python3高度なプログラミング(C)@propertyを使用

@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、現在時刻を算出します。

おすすめ

転載: www.cnblogs.com/AndyChen2015/p/11388749.html