class?Person(object):
????__count?=?0
????def?__init__(self,?name):
????????self.name?=?name
????????Person.__count?+=?1#這里的這個代碼不是應(yīng)該寫在def外部嗎,即__count=0后面啊
????????print?Person.__count?#這里的print是從實例訪問類屬性??
p1?=?Person('Bob')
p2?=?Person('Alice')
try:
????print?Person.__count#這里的print是從類訪問類屬性??
except?AttributeError:
????print?'attributeerror'
2 回答

孤獨的小豬
TA貢獻232條經(jīng)驗 獲得超302個贊
對的,樓上說的是正確的。Person.__count?+=?1寫在init函數(shù)內(nèi)部,是為了計算聲明了幾個實例,因為只有當類實例化后,才會調(diào)用init函數(shù)。而如果寫在外面的話,就沒有意義了。后面的print打印的結(jié)果的確是從實例訪問類屬性。

BlackStars
TA貢獻3條經(jīng)驗 獲得超0個贊
Person.__count?+=。要創(chuàng)建了一個新的實例才會調(diào)用 __init__這個函數(shù),從而count才應(yīng)該+1.如果放外面,就無法計算聲明了幾個實例。你的第二個第三個問題,都只是從類訪問類屬性。
添加回答
舉報
0/150
提交
取消