如何获取一个类的完整继承链中的所有类?
获取Python类的完整继承链
在Python中,要获取一个类的完整继承链(包含自身及所有父类,顺序从当前类到最顶层父类),可以通过以下两种简单方法实现:
方法1:利用类的__mro__属性
每个类都内置了__mro__属性,它会返回一个元组,包含按方法解析顺序排列的所有继承类:
class C: pass class B(C): pass class A(B): pass # 获取A的完整继承链 chain = A.__mro__ print(chain) # 输出:(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>, <class 'object'>)
如果不需要最顶层的object类,可通过切片剔除:
chain_without_object = A.__mro__[:-1] print(chain_without_object) # 输出:(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.C'>)
方法2:使用inspect模块的getmro()函数
inspect模块提供的getmro()函数和__mro__属性效果完全一致,同样返回继承链元组:
import inspect chain = inspect.getmro(A) print(chain) # 输出结果与__mro__相同
额外说明
- 若需要将结果转为列表格式,直接用
list()转换即可:list(A.__mro__) - 对于多重继承场景,返回的顺序遵循Python的C3方法解析算法,能正确处理复杂继承关系
内容的提问来源于stack exchange,提问作者Farid Murshudov
相关产品推荐
相关产品推荐

