@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表示可读可写可删除。
- class student(object): #新式类
- def __init__(self,id):
- self.__id=id
- @property #读
- def score(self):
- return self._score
- @score.setter #写
- def score(self,value):
- if not isinstance(value,int):
- raise ValueError(‘score must be an integer!‘)
- if value<0 or value>100:
- raise ValueError(‘score must between 0 and 100‘)
- self._score=value
- @property #读(只能读,不能写)
- def get_id(self):
- return self.__id
- s=student(‘123456‘)
- s.score=60 #写
- print s.score #读
- #s.score=-2 #ValueError: score must between 0 and 100
- #s.score=32.6 #ValueError: score must be an integer!
- s.score=100 #写
- print s.score #读
- print s.get_id #读(只能读,不可写)
- #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 有啥区别?