Get a list of bases in an object
How do you get a list of all the bases used by an object in its creation? For example:
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]?
I am looking to somehow retrieve what is based on an object, primarily because I am actually building the class of the object dynamically, but want to communicate which mixins were used in certain error cases.
+3
Nathaniel Ford
source
to share
2 answers
You can get bases from __class__
bases_used = my_object.__class__.__bases__
print(bases_used)
(<class '__main__.MixinB'>, <class '__main__.MixinA'>, <type 'object'>)
+2
Padraic cunningham
source
to share
see inspect.getmro or 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'>)
+2
behzad.nouri
source
to share