@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
1、只有@property表示
只读
。
2、同时有@property和@*.setter表示
可读可写
。
3、同时有@property和@*.setter和@*.deleter表示可读可写可删除。
代码:
- 1
- 2 class student(object):
- 3
- 4 def __init__(self,v_id = '000'):
- 5 self.__id = v_id
- 6
- 7 @property
- 8 def score(self):
- 9 return self._score
- 10
- 11 @score.setter
- 12 def score(self,v_score):
- 13 if not isinstance(v_score,int):
- 14 raise ValueError('score must be an integer!')
- 15 if v_score < 0 or v_score > 100:
- 16
- 17 print('数值不在有效范围内')
- 18 else:
- 19 print(v_score,'operation success')
- 20 self._score = v_score
- 21
- 22 @property
- 23 def get_id(self):
- 24 return self.__id
- 25
- 26 s = student('001')
- 27 s.score=60
- 28
- 29 print s.get_id
- 30 print s.score
- 31
- 32 s = student()
- 33 s.score=-100
- 34 print s.get_id
- 35 print s.score
执行: