Python深入03 物件的屬性

2021-06-26 03:43:53 字數 1105 閱讀 8669

ython一切皆物件(object),每個物件都可能有多個屬性(attribute)。python的屬性有一套統一的管理方案。

屬性的__dict__系統

物件的屬性可能來自於其類定義,叫做類屬性(class attribute)。類屬性可能來自類定義自身,也可能根據類定義繼承來的。乙個物件的屬性還可能是該物件例項定義的,叫做物件屬性(object attribute)。

物件的屬性儲存在物件的__dict__屬性中。__dict__為乙個詞典,鍵為屬性名,對應的值為屬性本身。我們看下面的類和物件。chicken類繼承自bird類,而summer為chicken類的乙個物件。

class bird(object):

feather = true

class chicken(bird):

fly = false

def __init__(self, age):

self.age = age

summer = chicken(2)

print(bird.__dict__)

print(chicken.__dict__)

print(summer.__dict__)

下面為我們的輸出結果:

第一行為bird類的屬性,比如feather。第二行為chicken類的屬性,比如fly和__init__方法。第三行為summer物件的屬性,也就是age。有一些屬性,比如__doc__,並不是由我們定義的,而是由python自動生成。此外,bird類也有父類,是object類(正如我們的bird定義,class bird(object))。這個object類是python中所有類的父類。

可以看到,python中的屬性是分層定義的,比如這裡分為object/bird/chicken/summer這四層。當我們需要呼叫某個屬性的時候,python會一層層向上遍歷,直到找到那個屬性。(某個屬性可能出現再不同的層被重複定義,python向上的過程中,會選取先遇到的那乙個,也就是比較低層的屬性定義)。

當我們有乙個summer物件的時候,分別查詢summer物件、chicken類、bird類以及object類的屬性,就可以知道summer物件所有的__dict__,就可以找到通過物件summer可以呼叫和修改的所有屬性了。下面兩種屬性修改方法等效:

Python深入03 物件的屬性

python深入03 物件的屬性 python一切皆物件 object 每個物件都可能有多個屬性 attribute python的屬性有一套統一的管理方案。物件的屬性可能來自於其類定義,叫做類屬性 class attribute 類屬性可能來自類定義自身,也可能根據類定義繼承來的。乙個物件的屬性還...

2 物件及其屬性

r語言的基礎性概念 物件 向量 vector 陣列 array 矩陣 matrix 資料框 data frame 列表 list as.資料型別 是修改資料型別的函式 數值型 a 100 a 100 物件a 為字元型 a as.numeric a 轉化為數值型別 複數型 a 100 11i a 10...

78 物件屬性讀寫

這一節主要描述與物件屬性有關的東西。有關如何對它進行定義的操作我們已經在上一章中描述過了,這裡不再敘述,只講對其的操作。zend api zval zend read property zend class entry scope,zval object,char name,int name len...