在了解了類基本的東西之後,下面看一下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...