请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution
程序员文章站
2022-06-08 15:41:04
...
#请利用@property给一个Screen对象加上width和height属性,以及一个只读属性resolution
class Screen(object):
@property
def width(self):
return self._width
@property
def height(self):
return self._height
@property
def resolution(self):
return self._width * self._height
@width.setter
def width(self, value):
if not isinstance(value, int):
raise ValueError('宽度必须为整数!')
if value <= 0:
raise ValueError('宽度必须大于0!')
self._width = value
@height.setter
def height(self, value):
if not isinstance(value, int):
raise ValueError('高度必须为整数!')
if value <= 0:
raise ValueError('高度必须大于0!')
self._height = value
**反思:**一开始把三个属性都放在一个@property下面了,出现了bug提示:Method ‘height’ has no ‘setter’ member。后来回看教程,廖雪峰老师说:Python内置的@property装饰器就是负责把一个方法变成属性调用的。一个@property对应一个方法,所以分开来就测试成功了。