python學習筆記 25 例項屬性和類屬性

2022-08-29 07:51:10 字數 1158 閱讀 2946

由於python是動態語言,根據類建立的例項可以任意繫結屬性。

給例項繫結屬性的方法是通過例項變數,或者通過self變數:

class student(object):

def __init__(self, name):

self.name = name

s = student('bob')

s.score = 90

但是,如果student類本身需要繫結乙個屬性呢?可以直接在class中定義屬性,這種屬性是類屬性,歸student類所有:

class student(object):

name = 'student'

當我們定義了乙個類屬性後,這個屬性雖然歸類所有,但類的所有例項都可以訪問到。來測試一下:

>>> class student(object):

... name = 'student'

...>>> s = student() # 建立例項s

>>> print(s.name) # 列印name屬性,因為例項並沒有name屬性,所以會繼續查詢class的name屬性

student

>>> print(student.name) # 列印類的name屬性

student

>>> s.name = 'michael' # 給例項繫結name屬性

>>> print(s.name) # 由於例項屬性優先順序比類屬性高,因此,它會遮蔽掉類的name屬性

michael

>>> print(student.name) # 但是類屬性並未消失,用student.name仍然可以訪問

student

>>> del s.name # 如果刪除例項的name屬性

>>> print(s.name) # 再次呼叫s.name,由於例項的name屬性沒有找到,類的name屬性就顯示出來了

student

從上面的例子可以看出,在編寫程式的時候,千萬不要對例項屬性和類屬性使用相同的名字,因為相同名稱的例項屬性將遮蔽掉類屬性,但是當你刪除例項屬性後,再使用相同的名稱,訪問到的將是類屬性。

python學習筆記013 模組中的私有屬性

在python中,沒有類似private之類的關鍵字來宣告私有方法或屬性。若要宣告其私有屬性,語法規則為 屬性前加雙下劃線,屬性後不加 雙 下劃線,如將屬性name私有化,則 name 即可。實際上,屬性前加單下劃線,屬性後不加下劃線也可以 name 1 以乙個下劃線開頭的識別符號 不能訪問的方法或...

Python學習筆記 25 , Web開發

web開發經歷的幾個階段 靜態web頁面 cgi common gateway inte ce 處理用法傳送的動態資料,用c c 編寫 asp jsp php,指令碼語言開發效率高,與html結合緊密,因此迅速取代cgi模式 mvc,為了解決直接用指令碼語言嵌入html導致的可維護性差的問題,web...

python學習筆記 類和例項

類 類是一種資料結構,可用於建立例項。一般情況下,類封裝了資料和可用於該資料的方法 python類是可呼叫的物件,即類物件 類通常在模組的頂層進行定義,以便類例項能夠在類所定義的源 檔案中的任何地方被建立。例項初始化 instance classname args.類在例項化時可以使用 init 和...