@property和@x.setter和@x.deleter表示可读可写可删除

Posted Howhy Blogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@property和@x.setter和@x.deleter表示可读可写可删除相关的知识,希望对你有一定的参考价值。

@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的。
1》只有@property表示只读。
2》同时有@property和@x.setter表示可读可写。

3》同时有@property和@x.setter和@x.deleter表示可读可写可删除。

 

[python] view plain copy
 
  1. class student(object):  #新式类  
  2.     def __init__(self,id):    
  3.         self.__id=id    
  4.     @property  #读    
  5.     def score(self):    
  6.         return self._score    
  7.     @score.setter #写    
  8.     def score(self,value):    
  9.         if not isinstance(value,int):    
  10.             raise ValueError(‘score must be an integer!‘)      
  11.         if value<or value>100:    
  12.             raise ValueError(‘score must between 0 and 100‘)     
  13.         self._score=value    
  14.     @property #读(只能读,不能写)    
  15.     def get_id(self):    
  16.         return self.__id    
  17.     
  18. s=student(‘123456‘)    
  19. s.score=60 #写    
  20. print s.score #读    
  21. #s.score=-2 #ValueError: score must between 0 and 100    
  22. #s.score=32.6 #ValueError: score must be an integer!    
  23. s.score=100 #写    
  24. print s.score #读    
  25. print s.get_id #读(只能读,不可写)  
  26. #s.get_id=456 #只能读,不可写:AttributeError: can‘t set attribute  

 

运行结果:
60
100
123456

以上是关于@property和@x.setter和@x.deleter表示可读可写可删除的主要内容,如果未能解决你的问题,请参考以下文章

python使用@property @x.setter @x.deleter

「数学」微积分初步

有啥区别。在 default.properties 和 project.properties 之间?

Angular 4 标记中的 [property]= 和 property 有啥区别?

利用java.util.Properties和dom4j读写.properties和.xml文件

SpringBoot中properties和yml的区别