List all base classes in a hierarchy of given class?

Sridhar Ratnakumar picture Sridhar Ratnakumar · Sep 9, 2009 · Viewed 73.2k times · Source

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?

Answer

Jochen Ritzel picture Jochen Ritzel · Sep 9, 2009

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'>)