关闭

python中@property的使用

标签: pythonproperty
825人阅读 评论(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
查看评论

Python 学习入门(36)—— @property属性

@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的假设定义了一个类:C,该类必须继承自object类,有一私有变量_xclass C: def __init__(self):  self.__x=None  1....
  • sunboy_2050
  • sunboy_2050
  • 2014-02-15 01:01
  • 29361

Python中的property() 函数 和@property 装饰符

http://www.linuxidc.com/Linux/2011-10/45082.htm 大家也许知道C#中提供了属性Property这个概念,让我们在对私有成员赋值、获取时更加方便,而不用像C++分别定义set*和get*两个函数,在使用时也就像直接使用变量一样。 今天突然发现P...
  • hshl1214
  • hshl1214
  • 2015-05-04 14:43
  • 9619

python(@property)

一、@property #@property 负责装饰一个对象函数,让某生成对应的setter和getter函数,调用的时候,直接可以使用对象名.函数名这种类似于属性的调用方法来执行函数小例子:(1) class People(object): def __init__(se...
  • huo_1214
  • huo_1214
  • 2018-02-02 12:05
  • 45

python中@property的使用

python中@property的使用@property的作用是把一个getter方法变成属性,@xxx.setter把setter方法变成属性赋值。
  • u010412719
  • u010412719
  • 2015-07-10 19:49
  • 825

对于Python中@property的理解和使用

重看狗书,看到对User表定义的时候有下面两行 @property def password(self): raise AttributeError('password is not a readable attribute') @password...
  • u013205877
  • u013205877
  • 2017-09-02 22:03
  • 1079

Python @property装饰器

廖老师的博客链接如下,一开始没看懂,搜罗了一大堆,有点感觉了 点击打开链接 其实@property装饰器就是把class的方法变成属性,见下面这个class,它有两个私有属性。 通过第一个@property和第二个@score.setter,我们可以像访问属性一样来调用类里面的方法,例如:...
  • sophie2805
  • sophie2805
  • 2015-06-14 18:49
  • 558

python中@property的用法

介绍两种操作类里私有属性值的方法 方法一是普通的方法:通过在类里声明函数从而实现对私有属性值的更改、查询以及对私有属性的删除。 方法二:通过@property装饰器来实现对私有属性值的操作 方法一: class People(object): def __init__(self,na...
  • dayun555
  • dayun555
  • 2018-02-02 19:16
  • 20

python(@property用法详解)

class People(object): def __init__(self, name, age): self.name = name self.age = age # 私有属性 self.__number = 0 ...
  • huo_1214
  • huo_1214
  • 2018-02-02 19:30
  • 21

python3学习笔记:@property

http://www.2cto.com/kf/201412/359312.html在阅读廖雪峰的Python的笔记时,读到了@property特性,发现略有不足,由于自己是初学,希望惠及更多的初学者吧。 @property 的用途是什么呢? 下面一步一步地介绍。 定义类Student,拥有变量名na...
  • xionghuixionghui
  • xionghuixionghui
  • 2017-03-24 16:18
  • 1172

python中的@property使用

如下:class animal(object): def __init__(self,name,age): self.name = name; self.age = age;a = animal("zhuzhu",9) a.name Out...
  • sinat_34233802
  • sinat_34233802
  • 2016-11-09 10:29
  • 269
    个人资料
    • 访问:698993次
    • 积分:12686
    • 等级:
    • 排名:第1311名
    • 原创:606篇
    • 转载:14篇
    • 译文:0篇
    • 评论:115条
    联系方式
    有问题欢迎探讨咨询哈
    qq号就不留了哈
    欢迎留言
    博客专栏
    最新评论