python入門(@property,@*.setter)
阿新 • • 發佈:2019-02-20
@property可以將python定義的函式“當做”屬性訪問,從而提供更加友好訪問方式,但是有時候setter/deleter也是需要的。
1、只有@property表示只讀。
2、同時有@property和@*.setter表示可讀可寫。
執行:
1、只有@property表示只讀。
2、同時有@property和@*.setter表示可讀可寫。
3、同時有@property和@*.setter和@*.deleter表示可讀可寫可刪除。
程式碼:
- 1#coding=utf-8
- 2class student(object): #需繼承父類object,否則property等無法生效
- 3
- 4def __init__(self,v_id = '000'):
- 5self.__id = v_id
- 6
- 7 @property
- 8def score(self):
- 9returnself._score
- 10
- 11 @score.setter
- 12def score(self,v_score):
- 13ifnot isinstance(v_score,int):
- 14raise ValueError('score must be an integer!')
- 15if v_score < 0or v_score > 100:
- 16#raise ValueError('score must between 0 and 100')
- 17print('數值不在有效範圍內')
- 18else:
- 19print
- 20self._score = v_score
- 21
- 22 @property
- 23def get_id(self):
- 24returnself.__id
- 25
- 26 s = student('001')
- 27 s.score=60
- 28#print s.__id #報錯,沒有該屬性
- 29print s.get_id
- 30print s.score
- 31
- 32 s = student()
- 33 s.score=-100
- 34print s.get_id
- 35print s.score
執行: