(@property,@.setter,@.deleter)
@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
1、只有@property表示只读。
2、同时有@property和@*.setter表示可读可写。
3、同时有@property和@*.setter和@*.deleter表示可读可写可删除。
setter例子
class test():
def __init__(self,t_id='520'):
self.__id =t_id
@property
def score(self):
return self._score
@score.setter
def score(self,t_score):
if not isinstance(t_score,int):
raise ValueError('请输入整型数据类型的分数')
if t_score <0 or t_score>100:
print('数值不在有效范围内')
else:
print(t_score,'操作成功')
self._score=t_score
@property
def get_id(self):
return self.__id
aa=test('111')
aa.score=99
print('id : ',aa.get_id)
print('score : ',aa.score)
print('=============')
aa=test()
aa.score=-88
print('id : ',aa.get_id)
print('score : ',aa.score)
deleter例子
class test():
def __init__(self,t_id='520'):
self.__id =t_id
@property
def score(self):
return self._score
@score.setter
def score(self,t_score):
if not isinstance(t_score,int):
raise ValueError('请输入整型数据类型的分数')
if t_score <0 or t_score>100:
print('数值不在有效范围内')
else:
print(t_score,'操作成功')
self._score=t_score
@score.deleter
def score(self):
del self._score
@property
def get_id(self):
return self.__id
aa=test('111')
aa.score=99
print('id : ',aa.get_id)
print('score : ',aa.score)
del aa.score
print(aa.score)
print('=============')
aa=test()
aa.score=-88
print('id : ',aa.get_id)
print('score : ',aa.score)