Python的@property裝飾器用來把一個類別的方法變成類別的屬性調用,然後@property本身又創建了另一個裝飾器,用一個方法給屬性賦值。下面是在類別中使用了@property後,設定類別的讀寫屬性,只讀和只寫屬性。
all方法設定的是讀寫屬性,可以設定這個屬性,也可以讀取這個屬性,如28行所示,如果沒有定義__init__()方法的話,只能先設定了這個屬性才能使用這個屬性。在32行中,如果想知道write屬性的值,也是會報錯的。而在34行中,也是沒有辦法繼續給readonly這個制度屬性賦值的。這裡使用了@property之後,可以實現Python“私有變數”,當然不是真正的私有,真正的私有比較複雜,不過也可以透過@property實現?在之後學習了再寫。
class UseProperty(object): def __init__(self): self._all = 233 @property def all(self): return self._all @all.setter def all(self, v): self._all = v @property def readonly(self): return self._all @property def write(self): raise AttributeError('This is not a readonly attribute.') @write.setter def write(self, value): self._write = value p = UseProperty() print p.all p.all = 100 print p.all p.write = 233 # print p.write print p.readonly # p.readonly = 10
以上是在Python中property裝飾器的基本用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!