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

为何修改实例d1的类变量breed后,其他实例的该变量值未变化?

Python类变量修改后实例未同步的原因

原代码

class Dog:
    breed='German'
    def __init__(self,name,age):
        self.name=name
        self.age=age
    
d1=Dog('fluffy',10)
d2=Dog('pookie',5)
d1.breed='Pitbull'
print(d1.breed)
print(d2.breed)

输出结果

Pitbull
German

原因解析

你这里犯了一个常见误区:用d1.breed='Pitbull'的操作并没有修改类变量,而是给实例d1新增了一个同名的实例变量。

Python中,当通过实例访问属性时,会先在实例自己的属性字典里查找,找不到才会去类的属性字典里读取类变量。给d1赋值breed后,d1.breed读取的是自身的实例变量,而类本身的breed变量完全没被改动,d2访问时还是会读取类里原本的German值。

正确修改类变量的方式

如果要让所有实例同步类变量的修改,必须通过类本身来赋值,而非实例:

class Dog:
    breed='German'
    def __init__(self,name,age):
        self.name=name
        self.age=age
    
d1=Dog('fluffy',10)
d2=Dog('pookie',5)
Dog.breed='Pitbull'  # 直接修改类的变量
print(d1.breed)
print(d2.breed)

此时输出会是:

Pitbull
Pitbull

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:11:36