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

Python类变量继承疑问:子类赋值后父类修改为何不生效?

问题解答

核心原因很简单:当你执行Dog.age = 1时,已经给Dog类本身创建了一个独立的age类变量,它不再继承父类Cat的age了。

具体拆解代码执行的每一步:

  • 初始状态:Cat有类变量age=0,Dog作为子类,自身没有定义age,所以此时访问Dog.age会向上查找父类Cat的age,值为0。
  • 执行Dog.age = 1:这一步不是修改父类的age,而是直接给Dog类新增了属于它自己的age变量。从这时候起,Dog的age和父类Cat的age就变成了两个独立的变量。
  • 后续执行Cat.age = 2:这只会改变Cat自身的age值,但Dog已经有了自己的age变量,所以访问Dog.age时会直接使用自己的,不会再去父类查找。

如果想让Dog始终跟随父类Cat的age变化,不要给Dog直接赋值age。比如去掉Dog.age = 1这行代码,再运行就会输出2 2。

你还可以用hasattr(Dog, 'age')验证这个逻辑:在执行Dog.age =1前,这个方法返回False(说明Dog没有自己的age,是继承父类的);赋值后返回True,证明Dog确实创建了自己的age变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:50:22