python 物件導向(四) 例項屬性和類屬性

2022-02-16 07:11:06 字數 1496 閱讀 3790

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

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

1

class student(object):2

def __init__(self, name):

3 self.name =name

45 s = student('

bob'

)6 s.score = 90

7 print(s.score)

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

1

class student(object

):2 name='

student'3

def __init__(self, score):

45 self.score =score

67 s = student(90)8

print(s.score)

9 print(s.name)

執行結果:

90

student

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

class student(object

): name='

student

'def __init__(self, score):

self.score =score

s = student(90

)# 建立例項

print(s.score)

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

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

s.name = '

michael

'# 給例項繫結name屬性

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

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

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

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

執行結果:

1902

student

3student

4michael

5student

6 student

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

Python物件導向 例項屬性和類屬性

由於python是動態語言,根據類建立例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student jeff print s.name jeff當我們定...

python3 物件導向 例項屬性和類屬性

由於python是動態語言,根據類建立的例項可以任意繫結屬性。給例項繫結屬性的方法是通過例項變數,或者通過self變數 class student object def init self,name self.name name s student bob s.score 90 但是,如果stude...

Python物件導向 屬性

1 建立用於計算的屬性 1.1 說明 1 在python中,可以通過 property 裝飾器 將乙個方法轉換為屬性,從而實現用於計算的屬性。2 把方法轉化為屬性後,可以直接通過方法名來訪問方法,而不需要再新增一對小括號 讓 更加簡潔。3 通過 property 裝飾器 轉換後的屬性不能重新賦值,否...