輸出與預(yù)期不符
#?Enter?a?code class?Animal(object): ????instance_count?=?0 ????def?__init__(self,name,age): ????????self.name?=?name ????????self.age?=?age dog?=?Animal('doggi',2) dog.instance_count?=?dog.instance_count+1 cat?=?Animal('tom',1) cat.instance_count?=?cat.instance_count+1 print(dog.name,dog.age,dog.instance_count) print(cat.name,cat.age,cat.instance_count)
從課程中講到的,對(duì)象中定義的變量屬性是會(huì)對(duì) 實(shí)例化對(duì)象進(jìn)行共享的,并且實(shí)例化對(duì)象也是可以修改的,對(duì)于另一個(gè)實(shí)例化對(duì)象可見(jiàn)的,那么在我這段代碼中,
dog.instance_count?=?dog.instance_count+1
在執(zhí)行完這段代碼后,其類(lèi)中的instance_count的值應(yīng)該變成1了,那么在執(zhí)行下面代碼
cat.instance_count?=?cat.instance_count+1
類(lèi)二中的instance_count的值應(yīng)該變成2,但是輸出的時(shí)候,全都是1,我現(xiàn)在不是很能理解。求解答
2023-10-13
class Animal(object):
? ? count = 0
? ? def __init__(self, name, age):
? ? ? ? self.name = name
? ? ? ? self.age = age
? ? ? ? Animal.count += 1
dog = Animal('wang', 3)
cat = Animal('miao', 2)
print(Animal.count)
2023-06-18
dog.instance_count?
=
?dog.instance_count
+
1 實(shí)際上不是在操作類(lèi)屬性 而是在dog實(shí)例上新增了一個(gè) instance_count屬性,然后你再次訪問(wèn)的時(shí)候因?yàn)閮?yōu)先級(jí) 你訪問(wèn)不到類(lèi)上的屬性了? 所以操作類(lèi)屬性最好使用Animal.instance_count
2023-06-13
instance_count是靜態(tài)屬性,每次實(shí)例化都會(huì)重新調(diào)用instance_count=0這句,所以你的dog,cat調(diào)用instance_count時(shí)都被初始化為0了,所以即使+1也只是在0的基礎(chǔ)上加