coding:utf-8
@property负责装饰一个实例方法,让其生成对应的setter和getter方法,调用时,可以直接使用对象名.函数名的这种类似于属性的调用方式。
class People(object):
# @property是将work函数声明成为一个getter函数,getter函数是进行取值的操作。
@property
def work(self):
return self._time
# @work必须和上面的work函数名保持一致,
# 声明一个work函数对应的setter函数,setter函数进行属性赋值的操作。
@work.setter
def work(self, value):
if isinstance(value, int):
self._time = value
else:
raise ValueError('value args 不符合要求')
@work.deleter #该装饰器相当于给work函数绑定一个删除属性的功能。
def work(self):
# 删除之前判断属性是否存在
if hasattr(self, '_time'):
del self._time
else:
raise ValueError('self._name attribute 不存在!')
print '_time属性被删除了'
p1 = People()
调用setter函数,给属性self._time赋值
对象名.函数名如果在=号的左侧,这是在调用setter方法。
10就是给work函数传的实参。将10赋值给value
p1.work = 10
调用getter函数,获取self._time的值
res = p1.work
print res
调用deleter函数,删除_time属性值
del p1.work
del p1.work