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 #报错