0

有一个层次结构的类。每个类都可以定义一个类变量(具体来说,它是一个字典),所有这些变量都具有相同的变量名。给定一个子类的实例,我希望根类能够以某种方式访问​​所有这些变量(即所有字典连接在一起)。我似乎找不到这样做的方法。无论我尝试什么,我总是陷入这样一个事实,即我无法检索给定子类的直接父类。如何实现?

4

1 回答 1

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}
于 2009-09-04T20:41:30.237 回答