Python 之 property(關鍵詞:Python/property/@property/特性)
阿新 • • 發佈:2018-12-09
特性(property)
特性協議允許我們把 1 個特定屬性的訪問操作(讀取、設定、刪除)指向我們提供的函式或方法,使得我們能夠插入在屬性的訪問操作的時候自動允許的程式碼,還可以為屬性提供文件。
property
class Person: def __init__(self, name): self._name = name def getName(self): print("獲取。。。") return self._name def setName(self, value): print("設定。。。") self._name = value def delName(self): print("刪除。。。") del self._name name = property(getName, setName, delName, "name property docs") >>> bob = Person("Bob Smith") >>> bob.name 獲取。。。 'Bob Smith' >>> bob.name = "Henry" 設定。。。 >>> bob.name 獲取。。。 'Henry' >>> del bob.name 刪除。。。 >>> Person.name.__doc__ 'name property docs'
@property
使用裝飾器編寫特性
>>> class Person: def __init__(self, name): self._name = name @property def name(self): "name property docs" print("獲取。。。") return self._name @name.setter def name(self, value): print("設定。。。") self._name = value @name.deleter def name(self): print("刪除。。。") del self._name >>> bob = Person("Bob Smith") >>> bob.name 獲取。。。 'Bob Smith' >>> bob.name = "Henry" 設定。。。 >>> bob.name 獲取。。。 'Henry' >>> del bob.name 刪除。。。 >>> Person.name.__doc__ 'name property docs'
參考文獻:
- Python 學習手冊 - 第 37 章。