1. 程式人生 > >python入門(@property,@*.setter)

python入門(@property,@*.setter)

@property可以將python定義的函式“當做”屬性訪問,從而提供更加友好訪問方式,但是有時候setter/deleter也是需要的。
1、只有@property表示只讀
2、同時有@property和@*.setter表示可讀可寫

3、同時有@property和@*.setter和@*.deleter表示可讀可寫可刪除

程式碼:

  1. 1#coding=utf-8
  2.  2class student(object):  #需繼承父類object,否則property等無法生效 
  3.  3
  4.  4def __init__(self,v_id = '000'):  
  5.  5self.__id = v_id  
  6.  6
  7.  7     @property  
  8.  8def score(self):  
  9.  9returnself._score  
  10. 10
  11. 11     @score.setter  
  12. 12def score(self,v_score):  
  13. 13ifnot isinstance(v_score,int):  
  14. 14raise ValueError('score must be an integer!')  
  15. 15if v_score < 0or v_score > 100:  
  16. 16#raise ValueError('score must between 0 and 100')     
  17. 17print('數值不在有效範圍內')  
  18. 18else:  
  19. 19print
    (v_score,'operation success')  
  20. 20self._score = v_score  
  21. 21
  22. 22     @property  
  23. 23def get_id(self):  
  24. 24returnself.__id  
  25. 25
  26. 26 s = student('001')  
  27. 27 s.score=60
  28. 28#print s.__id   #報錯,沒有該屬性
  29. 29print s.get_id  
  30. 30print s.score  
  31. 31
  32. 32 s = student()  
  33. 33 s.score=-100
  34. 34print s.get_id  
  35. 35print s.score  

執行: