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

Python中__init__方法行为随代码顺序变化的异常问题

类实例共享列表导致的异常原因及修复方案

你遇到的问题核心是:unit类里的units、powers、correspondance被定义成了类级属性,而非每个实例独有的属性。

原因分析

类属性的特性是所有该类的实例共享同一份数据。当你创建第一个实例p时,代码会往这个共享的units列表里添加"T";创建第二个实例q时,又会往同一个列表里追加"T"——所以所有实例的units指向的都是同一个内存地址的列表,修改操作会被所有实例共享。

你的错误代码结构大概是这样:

class unit:
    # 类属性:所有实例共享同一列表
    units = []
    powers = []
    correspondance = []

    def __init__(self, input_str):
        # 直接操作共享的类属性
        self.units.append(input_str)

修复方案

把这些属性移到__init__方法中,定义为实例属性,让每个实例初始化时创建属于自己的独立列表:

class unit:
    def __init__(self, input_str):
        # 每个实例拥有独立的列表
        self.units = []
        self.powers = []
        self.correspondance = []
        self.units.append(input_str)

此时再执行测试代码:

p = unit("T")
print(p.units)
q = unit("T")
print(q.units)

输出会变为:

['T']
['T']

无论调整打印顺序,每个实例的units都是独立的,不会互相干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:12:03