关闭

python中@property的使用

标签: pythonproperty
616人阅读 评论(0) 收藏 举报
分类:

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方法出现死循环。这个是我们需要注意的。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:413443次
    • 积分:10143
    • 等级:
    • 排名:第1744名
    • 原创:586篇
    • 转载:14篇
    • 译文:0篇
    • 评论:84条
    联系方式
    有问题欢迎探讨咨询哈
    qq:154943046
    添加注明CSDN博客哈
    博客专栏
    最新评论