特性(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 章。