一啄栓、 什么是實例和類屬性
實例屬性:聲明在方法中,通過self聲明的屬性姻成,是實例對象所特有的屬性砰识,而實例對象是類創(chuàng)建的對象
類屬性:聲明在類型的內(nèi)部,方法的外部的屬性
二佣渴、實例和類之間的關(guān)系
類屬性:
class People:
name = "tom" # 公有的類屬性
__age = 18 # 私有的類屬性
p = People()
print(p.name) # 實例對象
print(People.name) # 類對象
實例屬性:
class People:
name = "tom"
p = People()
p.age = 18
print(p.name)
print(p.age) # 實例屬性是實例對象特有的辫狼,類對象不能擁有
print(people.name)
print(people.age) # 錯誤:實例屬性,不能通過類對象調(diào)用
三辛润、兩者之間的區(qū)別
類屬性就是定義類的時候直接定義的屬性 emCount膨处,類似于java里面的static修飾的屬性,可以直接通過 類名.屬性名訪問:Employee.emCount
實例屬性是在__init()方法中定義的屬性砂竖,例如name真椿,和salary,self是指向自己的,類似java的this關(guān)鍵字乎澄,實際是通過內(nèi)置的方法setattr()完成的
如果在類外修改類屬性突硝,必須通過類對象去引用然后進行修改。如果通過實例對象去引用置济,會產(chǎn)生一個同名的實例屬性解恰,這種方式修改的是實例屬性锋八,不會影響到類屬性,并且如果通過實例對象引用該名稱的屬性护盈,實例屬性會強制屏蔽掉類屬性挟纱,即引用的是實例屬性,除非刪除了該實例屬性
當(dāng)類屬性與實例屬性同名時腐宋,一個實例訪問這個屬性時實例屬性會覆蓋類屬性紊服,但類訪問時不會