静态属性property的本质和应用
一、本质
静态属性property本质就是实现了get,set,delete三种方法
class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self, value): print('set的时候运行我啊') @AAA.deleter def AAA(self): print('delete的时候运行我啊') # 或者不加描述符直接这样写 ---> AAA=property(get_AAA,set_AAA,delete_AAA) #内置property三个参数与get,set,delete一一对应 # 只有在属性AAA定义property后才能定义AAA.setter,AAA.deleter f1 = Foo() f1.AAA # get f1.AAA = 'aaa' # setter del f1.AAA # deleter
二、应用(类型检测)
class People: def __init__(self, name): self.name = name # 实例化就触发property @property def name(self): # return self.name #无限递归 return self.new_name @name.setter def name(self, value): if not isinstance(value, str): raise TypeError('必须是字符串类型') self.new_name = value @name.deleter def name(self): del self.new_name p1 = People('alex') # self.name实际是存放到self.DouNiWan里 # p1.name = 1 # 报错,必须是字符串类型