创建可管理的属性:property
1 class Person: 2 def __init__(self, first_name): 3 self.first_name = first_name 4 5 @property 6 def first_name(self): 7 return self._first_name 8 @first_name.setter 9 def first_name(self, value): 10 if not isinstance(value, str): 11 '''返回对象是否是类或子类的实例''' 12 raise TypeError('Expected a string') 13 self._first_name = value 14 @first_name.deleter 15 def first_name(self): 16 raise AttributeError('Can not delaete attribute') 17 #方法分析: 在实现一个property 时候,数据也要储存在一个地方,self._first_name实际保存数据的地方,
而不是self.first_name ,在这个列子中,我们创建了一个property的目的就是在设置属性(attribute)的时候进行检查,
通过设置self.first_name,会自动调用@first_name.setter方法, 进行数据检查,否则返回self.first_name 18 19 a = Person('Guido') 20 print(a.first_name) 21 # a.first_name = 245 #报错 修改不是字符串 22 a.first_name = 'lwx' #修改 23 # del a.first_name #报错