欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

请利用@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对应一个方法,所以分开来就测试成功了。

相关标签: @property