是否有一个标准函数来迭代基类?

Con*_*ens 5 python

我希望能够遍历给定类的所有基类,包括类本身,包括直接和间接的基类.如果您有一个元类来检查其所有基础的内部Options类,这将非常有用.

为此,我写了以下内容:

def bases(cls):
    yield cls
    for direct_base in cls.__bases__:
        for base in bases(direct_base):
            yield base
Run Code Online (Sandbox Code Playgroud)

是否有标准功能为我这样做?

Amb*_*ber 13

在方法分辨率顺序(MRO)中,有一种方法可以全部返回它们:inspect.getmro.看这里:

http://docs.python.org/library/inspect.html#inspect.getmro

它将它们作为元组返回,然后您可以在一个循环中迭代:

import inspect
for base_class in inspect.getmro(foo):
    # do something
Run Code Online (Sandbox Code Playgroud)

即使你有钻石图案的继承,这只有一次产生每个基类的副作用.