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

Python遍历列表对象时调用方法为何修改所有对象?求独立修改方案

问题解析与解决方案

为什么所有实例的c属性会同步变化?

你代码里的c = {}是类属性,属于a这个类本身,而非类的某个实例。当创建多个a的实例时,所有实例会共享这同一个字典对象。所以第一个实例调用addC修改c时,本质是修改了类的c属性,其他实例访问self.c时都会指向这个共享字典,自然会同步看到变化。

如何让每个实例拥有独立的c属性?

把c的初始化放到类的__init__构造方法里,让它变成实例属性,这样每个实例创建时都会生成自己独立的字典:

class a:
    def __init__(self):
        self.c = {}  # 每个实例初始化时创建专属字典
    
    def addC(self, key, error):
        self.c[key] = error

def main():
    aa = [a() for _ in range(3)]
    for idx, ab in enumerate(aa):
        ab.addC('try', idx)
    
    # 验证结果
    print(aa[0].c)  # {'try': 0}
    print(aa[1].c)  # {'try': 1}
    print(aa[2].c)  # {'try': 2}

main()

这样每次调用addC时,修改的是当前实例自己的c字典,不会影响其他实例的属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:50:20