获取对象中的基础列表

时间:2015-06-03 22:54:21

标签: python python-3.x

如何获得对象在其创建中使用的所有基础的列表?例如:

class MixinA(object):
    pass

class MixinB(object):
    pass

class mixedClass(MixinB, MixinA, object):
    pass

my_object = mixedClass()
bases_used = my_object.???   # Is there a property that contains a list of [MixinA, MixinB, object]?

我希望以某种方式提取对象的基础,主要是因为我实际上正在动态构建对象的类,但我想报告在某些错误情况下使用了什么mixins。

2 个答案:

答案 0 :(得分:2)

请参阅inspect.getmroinspect.getclasstree

>>> inspect.getmro(type(my_object))
(<class '__main__.mixedClass'>, <class '__main__.MixinB'>, <class '__main__.MixinA'>, <class 'object'>)

或者,__bases__

>>> type(my_object).__bases__
(<class '__main__.MixinB'>, <class '__main__.MixinA'>, <class 'object'>)

答案 1 :(得分:2)

您可以从__class__

获取基础
bases_used = my_object.__class__.__bases__

print(bases_used)
(<class '__main__.MixinB'>, <class '__main__.MixinA'>, <type 'object'>)