亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

輸出與預期不符

#?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,我現在不是很能理解。求解答

正在回答

3 回答

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)


0 回復 有任何疑惑可以回復我~

dog.instance_count?=?dog.instance_count+1 實際上不是在操作類屬性 而是在dog實例上新增了一個 instance_count屬性,然后你再次訪問的時候因為優先級 你訪問不到類上的屬性了? 所以操作類屬性最好使用Animal.instance_count

2 回復 有任何疑惑可以回復我~

instance_count是靜態屬性,每次實例化都會重新調用instance_count=0這句,所以你的dog,cat調用instance_count時都被初始化為0了,所以即使+1也只是在0的基礎上加

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

輸出與預期不符

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號