python中@property的使用
@property的作用是把一个getter方法变成属性,@xxx.setter把setter方法变成属性赋值。
#coding:utf-8
class Screen(object):
@property
def width(self):
return self._width
@width.setter
def width(self,value):
if not isinstance(value,int):
raise ValueError(‘width must be a integer‘)
elif value<0:
raise ValueError(‘width must greater than zero‘)
else:
self._width=value
@property
def height(self):
return self._height
@height.setter
def height(self,value):
if not isinstance(value,int):
raise ValueError(‘height must be a integer‘)
elif value<0:
raise ValueError(‘height must greater than zero‘)
else:
self._height=value
@property
def revolution(self):
return self._width*self._height
#测试
s=Screen()
s._width=30
s._height=40
print(s.width)
print(s.height)
print(s.revolution)
这是看廖雪峰老师的教程上面的一个练习题,做了下,发现了下面问题。
- 在类中的变量中的下划线不能少,否则,会报错,原因在于:如果不加下划线出现self.width时就会继续调用此类的getter方法出现死循环。这个是我们需要注意的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-12 18:23:35