有一个阶级很糟糕。每个类可以定义一个类变量(具体来说,它是一个字典),所有这些变量都具有相同的变量名。在给定子类的实例的情况下,我希望根类能够以某种方式访问所有这些变量(即所有字典连接在一起)。我似乎无法找到这样做的方法。无论我尝试什么,我总是被困在这样一个事实,即我无法检索给定子类的直接父类。如何实现这一目标?
答案 0 :(得分:1)
只要你使用新式的类(即object
或其他内置类型是“最深的祖先”),__mro__
就是你要找的东西。例如,给定:
>>> class Root(object):
... d = {'za': 23}
...
>>> class Trunk(Root):
... d = {'ki': 45}
...
>>> class Branch(Root):
... d = {'fu': 67}
...
>>> class Leaf(Trunk, Branch):
... d = {'po': 89}
现在,
>>> def getem(x):
... d = {}
... for x in x.__class__.__mro__:
... d.update(x.__dict__.get('d', ()))
... return d
...
>>> x = Leaf()
>>> getem(x)
{'za': 23, 'ki': 45, 'po': 89, 'fu': 67}