1. 程式人生 > >Python 之 property(關鍵詞:Python/property/@property/特性)

Python 之 property(關鍵詞:Python/property/@property/特性)

特性(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'

參考文獻:

  1. Python 學習手冊 - 第 37 章。