當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。