如果我有 Python 代码
class A():
pass
class B():
pass
class C(A, B):
pass
我有类 C
,有没有办法遍历它的父类(super class)(A
和 B
)?类似伪代码的东西:
>>> magicGetSuperClasses(C)
(<type 'A'>, <type 'B'>)
一个解决方案似乎是inspect module和 getclasstree
函数。
def magicGetSuperClasses(cls):
return [o[0] for o in inspect.getclasstree([cls]) if type(o[0]) == type]
但这是实现目标的“Pythonian”方式吗?
最佳答案
C.__bases__
是一个父类(super class)数组,因此您可以像这样实现您的假设函数:
def magicGetSuperClasses(cls):
return cls.__bases__
但我想在大多数情况下直接引用 cls.__bases__
会更容易。
关于Python父类(super class)反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25807/