python基礎 例項屬性和類屬性

2022-06-09 11:51:07 字數 2128 閱讀 1044

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

shuke

'...

>>> s = student() #

建立例項s

>>> print(s.name) #

列印name屬性,因為例項並沒有name屬性,所以會繼續查詢class的name屬性

shuke

>>> print(student.name) #

列印類的name屬性

shuke

>>> s.name = '

janury'#

給例項繫結name屬性

>>> print(s.name) #

由於例項屬性優先順序比類屬性高,因此,它會遮蔽掉類的name屬性

january

>>> print(student.name) #

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

shuke

>>> del s.name #

如果刪除例項的name屬性

>>> print(s.name) #

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

shuke

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

#

python 例項屬性和類屬性 示例

#2016-8-29 20:59:41

#mengmengcoding

#-*- coding: utf-8 -*-

#類屬性:直接在class中定義的屬性,歸類所有

class

student(object):

name='

shuke'#

但所有例項都可以訪問到該屬性

s=student() #

建立例項s

print(s.name)#

列印name屬性,因為例項並沒有name屬性,所以會繼續查詢class的name屬性

#輸出shuke

print(student.name) #

列印類的name屬性

#輸出:shuke

s.name='

january'#

給例項繫結name屬性

print(s.name) #

由於例項屬性優先順序比類屬性高,因此,它會遮蔽掉類的name屬性

#輸出:january

print(student.name) #

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

#輸出:shuke

del s.name #

如果刪除例項的name屬性

print(s.name) #

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

#輸出:shuke

Python基礎(例項屬性和類屬性)

1.類沒有例項屬性時會呼叫類屬性 class flower object height 20 def init self,name,color self.name name self.color color f flower 玫瑰 紅色 print f.height 輸出 202.例項屬性的優先順序...

python基礎之類屬性和例項屬性

屬性 類屬性和例項屬性 類屬性 就是類物件所有的屬性 小結 類屬性 是可以 被 類物件和例項物件共同訪問的 例項屬性只能由例項物件訪問 class student name 黎明 屬於類屬性 就是student類物件所擁有的 def init self,age self.age age 例項屬性 p...

Python 類屬性和例項屬性

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