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__
之间的区别感到困惑。
答案 0 :(得分:3)
B.__dict__
只是B
上直接定义的内容。当您尝试访问属性时,会发生动态查找过程,从而尝试使用超类以查看哪个(如果有)具有该属性。