Python學習 例項屬性和類屬性

2021-10-14 14:33:00 字數 2279 閱讀 4333

由於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

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

為了統計學生人數,可以給student類增加乙個類屬性,每建立乙個例項,該類屬性自動增加:

思考,剛開始想的是,直接在count下面寫count+=1,是不是就可以每次生成乙個例項就+1呢

class

student

(object):

count =

0 count +=

1def

__init__

(self, name)

: self.name = name

if __name__ ==

'__main__'

:print

(student.count)

bart = student(

'bart'

)print

(student.count)

part = student(

'part'

)print

(student.count)

輸出結果:11

1

回頭一想,student是乙個類屬性,而且,每次建立乙個例項,是不是就要呼叫乙個類的__init__方法呢?對的!每次呼叫__init__方法才叫建立乙個例項嘛!

class

student

(object):

count =

0def

__init__

(self, name)

: self.name = name

student.count +=

1# 這裡要用類名

Python 類屬性和例項屬性

一 簡述二者區別 對類屬性的修改可被儲存在類中 單例模式就是基於類屬性的這種特性 修改後的屬性能夠被子類繼承 例項屬性的修改只對該例項有效,不會對其他例項和其對應類的子類例項造成影響 二 來看下例子 類屬性 class a object a 1 pass print a.a 檢視a類的屬性a,結果為...

python 例項屬性和類屬性

如何在乙個類中定義一些常量,每個物件都可以方便訪問這些常量而不用重新構造?第乙個問題,在 python 的類裡,你只需要和函式並列地宣告並賦值,就可以實現這一點,例如這段 中的 welcome str。一種很常規的做法,是用全大寫來表示常量,因此我們可以在類中使用 self.welcome str ...

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

上篇 class tool object 類屬性 num 0 方法 def init self,name 例項屬性 self.name name tool.num 1 tool1 tool a 例項物件 tool2 tool b 例項物件 tool3 tool c 例項物件 類屬性 num 0 例項...