You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python多继承同名类属性优先级问题咨询

Python多继承中类属性的优先级问题

是的,在Python多继承场景下,第一个被声明的父类的类属性优先级确实更高,这背后是Python的「方法解析顺序(MRO)」在起作用——类属性的查找逻辑和方法完全一致,都会严格遵循这个顺序。

具体到你的例子:

  • 当定义class C(A, B)时,C的MRO列表是[C, A, B, object]。
  • 访问C.name时,解释器会按这个顺序逐层查找:先检查C自身有没有name属性,找不到就去父类A里找,一旦在A中找到'a'就直接返回结果,不会再继续往后查找B的name属性,所以B的name根本没机会被访问到,自然无法覆盖A的属性。

你可以通过打印类的__mro__属性验证这个顺序:

print(C.__mro__)
# 输出结果:(<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'object'>)

如果想让B的name生效,要么调整继承顺序把B放在前面(class C(B, A)),要么在C类自身定义name属性来显式覆盖父类的属性。

内容的提问来源于stack exchange,提问作者Matthias Burger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:07:04