Python中的類屬性和物件屬性

2021-08-29 15:52:57 字數 1752 閱讀 5498

在了解了類基本的東西之後,下面看一下python中這幾個概念的區別

先來談一下類屬性例項屬性

在前面的例子中我們接觸到的就是例項屬性(物件屬性),顧名思義,類屬性就是類物件所擁有的屬性,它被所有類物件例項物件所共有,在記憶體中只存在乙個副本,這個和c++中類的靜態成員變數有點類似。對於公有的類屬性,在類外可以通過類物件例項物件訪問

class people(object):

name = 'tom' #公有的類屬性

__age = 12 #私有的類屬性

p = people()

print(p.name) #正確

print(people.name) #正確

print(p.__age) #錯誤,不能在類外通過例項物件訪問私有的類屬性

print(people.__age) #錯誤,不能在類外通過類物件訪問私有的類屬性

class people(object):

address = '山東' #類屬性

def __init__(self):

self.name = 'xiaowang' #例項屬性

self.age = 20 #例項屬性

p = people()

p.age =12 #例項屬性

print(p.address) #正確

print(p.name) #正確

print(p.age) #正確

print(people.address) #正確

print(people.name) #錯誤

print(people.age) #錯誤

class people(object):

country = 'china' #類屬性

print(people.country)

p = people()

print(p.country)

p.country = 'japan'

print(p.country) #例項屬性會遮蔽掉同名的類屬性

print(people.country)

del p.country #刪除例項屬性

print(p.country)

從上面這裡例子我們可以知道:

對於類屬性我們可以通過類名及例項物件去訪問,即:

init()外初始化

在內部用類名.類屬性名呼叫

外部既可以用類名.類屬性名又可以用例項化物件.類屬性名來呼叫

如果需要在類外修改類屬性,必須通過類物件去引用然後進行修改。如果通過例項物件去引用,會產生乙個同名的例項屬性,這種方式修改的是例項屬性,不會影響到類屬性,並且之後如果通過例項物件去引用該名稱的屬性,例項屬性會強制遮蔽掉類屬性,即引用的是例項屬性,除非刪除了該例項屬性。

類屬性和物件屬性

實現記錄建立物件個數的功能 class tool object def init self,new name self.name new name 底下這個方法太笨啦 num 0 tool1 tool 鐵鍬 num 1 print num tool2 tool 工兵鏟 num 1 print num...

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

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

python中的類屬性和例項屬性

乙個類例項化後,例項是乙個物件,有屬性。同樣,類也是乙個物件,它也有屬性。定義乙個類屬性,如下 class a x 7定義乙個很簡單的類,類中有乙個變數x 7,在類a中,變數x所引用的資料,能夠直接通過類來呼叫。或者說x是類a的屬性,這種屬性稱為類屬性。class a x 7 if name mai...