Search code examples
pythonclassinheritanceoopintrospection

List all base classes in a hierarchy of given class?


Given a class Foo (whether it is a new-style class or not), how do you generate all the base classes - anywhere in the inheritance hierarchy - it issubclass of?


Solution

  • inspect.getmro(cls) works for both new and old style classes and returns the same as NewClass.mro(): a list of the class and all its ancestor classes, in the order used for method resolution.

    >>> class A(object):
    >>>     pass
    >>>
    >>> class B(A):
    >>>     pass
    >>>
    >>> import inspect
    >>> inspect.getmro(B)
    (<class '__main__.B'>, <class '__main__.A'>, <type 'object'>)