輸出與預期不符
#?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)
從課程中講到的,對象中定義的變量屬性是會對 實例化對象進行共享的,并且實例化對象也是可以修改的,對于另一個實例化對象可見的,那么在我這段代碼中,
dog.instance_count?=?dog.instance_count+1
在執行完這段代碼后,其類中的instance_count的值應該變成1了,那么在執行下面代碼
cat.instance_count?=?cat.instance_count+1
類二中的instance_count的值應該變成2,但是輸出的時候,全都是1,我現在不是很能理解。求解答
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 實際上不是在操作類屬性 而是在dog實例上新增了一個 instance_count屬性,然后你再次訪問的時候因為優先級 你訪問不到類上的屬性了? 所以操作類屬性最好使用Animal.instance_count
2023-06-13
instance_count是靜態屬性,每次實例化都會重新調用instance_count=0這句,所以你的dog,cat調用instance_count時都被初始化為0了,所以即使+1也只是在0的基礎上加