Python property() 函數(shù)

2019-03-14 11:45 更新

Python property() 函數(shù)

Python 內置函數(shù) Python 內置函數(shù)

描述

Python property() 函數(shù)的作用是在新式類中返回屬性值。

語法

以下是 property() 方法的語法:

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

參數(shù)

  • fget:獲取屬性值的函數(shù)
  • fset:設置屬性值的函數(shù)
  • fdel:刪除屬性值函數(shù)
  • doc:屬性描述信息

返回值

返回新式類屬性。

實例

定義一個可控屬性值 x

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 將觸發(fā) getter,c.x = value 將觸發(fā) setter,del c.x 觸發(fā) deleter。

如果給定 doc 參數(shù),其將成為這個屬性值的 docstring,否則 property 函數(shù)就會復制 fget 函數(shù)的 docstring(如果有的話)。

將 property 函數(shù)用作裝飾器可以很方便的創(chuàng)建只讀屬性:

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

這個代碼和第一個例子完全相同,但要注意這些額外函數(shù)的名字和 property 下的一樣,例如這里的 x。

Python 內置函數(shù) Python 內置函數(shù)


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號