zoukankan      html  css  js  c++  java
  • Python property()函数

    property():返回新式类属性。

    class property ( [fget [, fset [, fdel [, doc] ] ] ] )

    • fget:获取属性值
    • fset:设置属性值
    • fdel:删除属性值
    • doc:属性描述信息

    实例:

    class C(object):
        def __init__(self):
            self._x = None
     
        def getx(self):
            return self._x
     
        def setx(self, value):
            self._x = value
     
        def delx(self):
            del self._x
     
        x = property(getx, setx, delx, "I'm the 'x' property.")

    如果c是C的实例化,c.x将触发getter,c.x = value触发setter,del c.x触发deleter。

    如果给定doc参数,将成为这个属性值的docstring,否则property函数就会复制fget函数的docstring(如果有的话)。

    property函数用作装饰器可以很方便的创建只读属性

    class Parrot(object):
        def __init__(self):
            self._voltage = 100000
     
        @property
        def voltage(self):
            """Get the current voltage."""
            return self._voltage

    代码将 voltage() 方法转化成同名只读属性的 getter 方法。

    property 的getter, setter 和 deleter方法同样可以用作装饰器:

    class C(object):
        def __init__(self):
            self._x = None
     
        @property
        def x(self):
            """I'm the 'x' property."""
            return self._x
     
        @x.setter
        def x(self, value):
            self._x = value
     
        @x.deleter
        def x(self):
            del self._x

    这个代码和第一个例子完全相同,但注意这些额外函数名和 property 下一样,例如这里的 x。

  • 相关阅读:
    Realtime crowdsourcing
    maven 常用插件汇总
    fctix
    sencha extjs4 command tools sdk
    首次吃了一颗带奶糖味的消炎药,不知道管用不
    spring mvc3 example
    ubuntu ati driver DO NOT INSTALL recommand driver
    yet another js editor on windows support extjs
    how to use springsource tools suite maven3 on command
    ocr service
  • 原文地址:https://www.cnblogs.com/keye/p/10929224.html
Copyright © 2011-2022 走看看