创建可管理的属性: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 #报错

 

posted @ 2018-08-28 21:48  雷文轩  阅读(199)  评论(0编辑  收藏  举报