如何获得对象在其创建中使用的所有基础的列表?例如:
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。
答案 0 :(得分:2)
请参阅inspect.getmro或inspect.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'>)