Python类继承和__dict__查找[重复]
这个问题已经在这里有了答案 :
python只获取类属性没有超类 (3个答案)
6年前关闭。
假设我定义了A类:
>>> class A:
... a = 1
... class SubA:
... sub_a = { 'a': 1, 'b': 1}
然后定义从A继承的类B:
>>> class B(A):
... pass
现在,检查 dict A和 dict B的:
>>> A.__dict__
{'a': 1, '__module__': '__builtin__', '__doc__': None, 'SubA': <class __builtin_ _.SubA at 0x02CAA3E8>}
>>> B.__dict__
{'__module__': '__builtin__', '__doc__': None}
不知何故, B .__ dict__不 包含 ‘a’ 或 ‘SubA’ 。现在,如果我们这样做:
>>> A.a
1
>>> B.a
1
>>> A.SubA
<class __builtin__.SubA at 0x02CAA3E8>
>>> B.SubA
<class __builtin__.SubA at 0x02CAA3E8>
第一个问题:为什么 B . dict 不包含 ‘a’ 和 ‘SubA’
?第二个问题:为什么Ba和B.SubA产生预期的结果,虽然没有 “一” ,也没有 “速霸” 是在 乙 的 dict
?
谢谢!