当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python property用法及代码示例


用法:

class property(fget=None, fset=None, fdel=None, doc=None)

返回一个属性属性。

fget 是获取属性值的函数。 fset 是用于设置属性值的函数。 fdel 是删除属性值的函数。 doc 为该属性创建一个文档字符串。

一个典型的用途是定义一个托管属性 x

class C:
    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.")

如果 cC 的实例,则 c.x 将调用 getter,c.x = value 将调用 setter,而 del c.x 将调用 deleter。

如果给定,doc 将是属性属性的文档字符串。否则,该属性将复制 fget 的文档字符串(如果存在)。这使得使用 property() 作为装饰器可以轻松创建只读属性:

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

@property 装饰器将 voltage() 方法转换为具有相同名称的只读属性的 “getter”,并将 voltage 的文档字符串设置为“获取当前电压”。

属性对象具有 gettersetterdeleter 方法,这些方法可用作创建属性副本的装饰器,并将相应的访问器函数设置为装饰函数。最好用一个例子来解释:

class C:
    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

此代码与第一个示例完全相同。确保为附加函数提供与原始属性相同的名称(在本例中为 x。)

返回的属性对象还具有与构造函数参数对应的属性 fgetfsetfdel

在 3.5 版中更改:属性对象的文档字符串现在是可写的。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 property。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。