如果我有 Python 代码
class A():
pass
class B():
pass
class C(A, B):
pass
我有类C
,有没有办法遍历它的超类(A
和B
)?类似伪代码的东西:
>>> magicGetSuperClasses(C)
(<type 'A'>, <type 'B'>)
一种解决方案似乎是检查模块和getclasstree
功能。
def magicGetSuperClasses(cls):
return [o[0] for o in inspect.getclasstree([cls]) if type(o[0]) == type]
但这是实现目标的“Pythonian”方式吗?