Python @property裝飾器
阿新 • • 發佈:2019-02-16
廖老師的部落格連結如下,一開始沒看懂,蒐羅了一大堆,有點感覺了
其實@property裝飾器就是把class的方法變成屬性,見下面這個class,它有兩個私有屬性。
通過第一個@property和第二個@score.setter,我們可以像訪問屬性一樣來呼叫類裡面的方法,例如:
s=Student("David",99)
s.score = 100
至於用這種裝飾器的原因,我想,就是為了簡潔吧,直接用屬性賦值的方式,執行了方法。Python 肯定是個懶人發明的。
class Student(object): def __init__(self,name,score): self.__name = name self.__score = score @property def score(self): return self.__score @score.setter def score(self,value): if not isinstance(value,int): raise ValueError("invalid score!!!") elif value < 0 or value > 100: raise ValueError("score must be between [0,100]!!!") else: self.__score = value @property def name(self): return self.__name