最快理解property 函式(python)

2021-10-10 19:09:57 字數 1459 閱讀 8795

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

其中fget – 獲取屬性值的函式

fset – 設定屬性值的函式

fdel – 刪除屬性值函式

doc – 屬性描述資訊

property會返回乙個新式類屬性

classc(

object):

def__init__

(self)

: self._x =

none

defgetx

(self)

:return self._x

defsetx

(self, value)

: self._x = value

defdelx

(self)

:del self._x

x =property

(getx, setx, delx,

"i'm the 'x' property."

)

如果c是c的例項:

1.在property中,getx對應獲取屬性值的函式,也就是c.x的返回值

所以儘管x在c中是匿名的(_x),但還是可以被c.x呼叫

2.在property中,setx對應設定屬性值的函式,也就是c.x = value的返回值,所以儘管x在c中是匿名的,但還是可以被如此設定

3.同理,property中的第三個引數代表了刪除c屬性x的函式

我們可以看到,在沒有property時,我們是不能從外表呼叫._x屬性的

反之,在property存在的情況下,我們是可以從外部呼叫x的,且之前定義的三個函式均起到了作用

我們先來看python builtins檔案中對類baseexception中引數args的定義

args =

property

(lambda self:

object()

,#獲取值

lambda self, v:

none

,#設定值

lambda self:

none

)#刪除值

顯然這裡的定義要比例一中的高明多了

我們白嫖一下這個定義,做個小實驗

發現這種方式確實是可行的,而且非常好

待更新

關於property引數的理解

之前對於property的引數,一直是弄得雲裡霧裡的,不知道這些引數到底有啥用,最近學了記憶體管理,算是對它有了一點理解,我也來總結一下把。推薦看這篇文章之前先了解一下記憶體管理的基本知識ios記憶體管理初認識 首先,引數分三類 原子性 atomic nonatomic 預設是atomic atom...

如和快速理解property

一種用起來像是使用的例項屬性一樣的特殊屬性,可以對應於某個方法,通過使用property屬性,能夠簡化呼叫者在獲取資料的流程。定義時,在例項方法的基礎上新增 property 裝飾器 並且僅有乙個self引數 呼叫時,無需括號,加上就錯了 經典類中的屬性只有一種訪問方式,其對應被 property ...

property的理解和例項

python中有裝飾器的概念,property是裝飾器的一種。以下面的例子進行說明 私有屬性以雙下劃線 開頭 外部不可通過instance.property來訪問或者更改。如果一定要,可以通過setname getname 等方法實現,可是這樣不簡潔。但是,使用 property可以優雅的對私有屬性...