@property就是把函数当作值来对待,但是这个函数必须有值
案例如下:class Data(object):
def __init__(self):
self.__num = 100 # 这个在后期可以控制不能赋值
@property # 这个必须是有值
def num(self):
return self.__num
@num.setter
def num(self, n):
self.__num = n
@num.deleter
def num(self):
print("del")
del self.__num # 这个需要自己写的
data = Data()
print(data.num-10) # data.num=>会去调用@property装饰的函数,就是调用@property装饰的方法num方法
data.num = 20 # 自动去调用@xx.setter这个装饰器的函数 就是调用的是@xxx.setter装饰的方法的num方法#
del data.num # 自动去调用@xx.deleter装饰的函数,就是调用@xx.delete装饰的方法num方法