为什么python __dict__不会继承class属性但可以访问它

时间:2017-02-23 08:26:37

标签: python class

class A(object):
    name = "Class A"

class B(A):
    pass
print A.__dict__
print B.__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&#39;名称&#39;不在B. dict ,但可以通过&#39; B.name&#39 ;.

访问。
print B.name

输出:

B.name =  Class A

我仍然对getattr函数与Class.__dict__之间的区别感到困惑。

1 个答案:

答案 0 :(得分:3)

B.__dict__只是B上直接定义的内容。当您尝试访问属性时,会发生动态查找过程,从而尝试使用超类以查看哪个(如果有)具有该属性。