2017-02-23 46 views
0
class A(object): 
    name = "Class A" 

class B(A): 
    pass 
print A.__dict__ 
print B.__dict__ 

輸出:爲什麼蟒蛇__dict__不列入繼承類屬性,但可以訪問它

{'__dict__': <attribute '__dict__' of 'A' objects>, '__module__': '__main__', '_ 
_weakref__': <attribute '__weakref__' of 'A' objects>, 'name': 'Class A', '__doc 
__': None} 


{'__module__': '__main__', '__doc__': None} 

的Attr '名' 是不是B. 字典,但可以通過 'B.name' 訪問。

print B.name 

輸出:

B.name = Class A 

我仍然感到困惑什麼是getattr功能和Class.__dict__之間的差異。

回答

2

B.__dict__只是直接在B上定義的東西。當您嘗試訪問某個屬性時,會發生動態查找過程,從而嘗試超類以查看哪些(如果有)屬性。

相關問題