第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在__dict__中找不到python中的類變量

在__dict__中找不到python中的類變量

千萬里不及你 2021-03-15 16:13:50
有一個代碼:class C():    a=1    def f(self):        print "f func"a=C()print a.aa.f()>>> 1>>> f func當我試圖獲得a.__dict__或時vars(a),它告訴我公正{}。但a.b=123print a.__dict__>>> {'b': 123}我不明白,為什么會這樣。
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經(jīng)驗 獲得超3個贊

查看a.__dict__vars(a)為您提供屬性a,它是一個實例。該實例最初沒有自己的屬性。屬性a您在類定義創(chuàng)建的類本身的屬性不是它的實例。稍后,當您a.b = 123在實例上創(chuàng)建一個屬性時,便可以在實例中看到它__dict__。a如果您查看,就會看到該屬性C.__dict__。

當您這樣做時print a.a,Python會a在類上動態(tài)查找屬性C。它看到實例沒有屬性a,因此它在類上查找并在那里找到一個。那就是打印的值。創(chuàng)建實例時,class屬性不會“復(fù)制”到實例。相反,每次您嘗試讀取實例屬性時,Python都會檢查該實例屬性是否存在,如果不存在,則會在類中進行查找。


查看完整回答
反對 回復(fù) 2021-03-31
?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

>>> C.a

1

>>> vars(C)['a']

1

(vars一堂課的整個字典相當長。)


就像您的標題說的那樣,它是一個類變量。它屬于類,而不是對象。Python在幕后做一些特殊的邏輯,以便在調(diào)用時為您查找類型對象a.a。我不是專家,但我懷疑它正在尋找a與找到方法相同的方法。我相信在Java之類的語言中,不建議使用這種用法。我不知道它是否不建議在Python中使用。


查看完整回答
反對 回復(fù) 2021-03-31
  • 2 回答
  • 0 關(guān)注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號