列出给定类的层次结构中的所有基类?

给定一个Foo类(不pipe它是否是新式类),如何生成所有的基类 – inheritance层次结构中的任何地方 – 它的issubclass

inspect.getmro(cls)适用于新旧风格类,并返回与NewClass.mro()相同的类:该类及其所有基类的列表。

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

请参阅python class上的__bases__属性 , class包含一个基类的元组:

 >>> def classlookup(cls): ... c = list(cls.__bases__) ... for base in c: ... c.extend(classlookup(base)) ... return c ... >>> class A: pass ... >>> class B(A): pass ... >>> class C(object, B): pass ... >>> classlookup(C) [<type 'object'>, <class __main__.B at 0x00AB7300>, <class __main__.A at 0x00A6D630>] 

inspect.getclasstree()将创build一个嵌套的类和它们的基础列表。 用法:

 inspect.getclasstree(inspect.getmro(IOError)) # Insert your Class instead of IOError. 

你可以使用类对象的__bases__元组:

 class A(object, B, C): def __init__(self): pass print A.__bases__ 

__bases__返回的元组具有其所有的基类。

希望能帮助到你!