Python继承与函数重写:多继承下同名方法返回值问题
Python多继承同名方法调用规则
结论
当类的继承声明为C(A, B)时,会优先调用继承列表中位置更靠左的A类的同名方法,最终返回A类该方法的返回值。
验证示例
class A: def get_value(self): return 100 class B: def get_value(self): return 200 class C(A, B): # 没有重写get_value方法 pass c_instance = C() print(c_instance.get_value()) # 输出结果为 100
核心规则说明
这个匹配逻辑由Python的**方法解析顺序(MRO,Method Resolution Order)**决定:
- 简单无菱形继承的多继承场景下,方法匹配严格遵循继承列表从左到右的优先级,先声明的父类方法会被优先匹配
- 你可以执行
print(C.mro())查看该类的完整方法搜索顺序,输出结果为[<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>],方法会按照这个列表的顺序从左到右搜索匹配 - 如果需要调用B类的同名方法,可以显式指定父类调用:
print(B.get_value(c_instance)),输出结果为200
内容的提问来源于stack exchange,提问作者user11683942
相关产品推荐
相关产品推荐

