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

为何类属性(列表)每次运行时持续增长?问题排查求助

问题分析:类属性导致的列表持续增长问题

你定义了如下Python类:

class Seq:
    values = []

    def add(self, value):
        Seq.values.append(value)

在Jupyter Notebook的第二个单元格执行以下代码:

model = Seq()
model.add(1)
model.add(2)
model.add(3)

print(model.values)

首次运行输出正常结果:

[1, 2, 3]

但再次运行该单元格时,列表持续增长:

[1, 2, 3, 1, 2, 3]

再次运行后:

[1, 2, 3, 1, 2, 3, 1, 2, 3]

请问哪里操作有误?


问题根源

你把values定义成了类属性,而非实例属性。类属性是所有类实例共享的资源,不管创建多少个Seq对象,它们都会共用同一个values列表。每次运行单元格时,虽会创建新的Seq实例,但调用add方法时,都是往同一个类级别的列表里追加元素,因此列表会不断增长。

修正方案

将values改为实例属性,在类的__init__方法中初始化:

class Seq:
    def __init__(self):
        self.values = []  # 每个实例拥有独立的列表

    def add(self, value):
        self.values.append(value)

这样每次创建Seq实例时,都会生成一个全新的空列表。多次运行单元格时,新实例会使用自己的独立列表,不会与之前的实例共享数据,也就不会出现列表持续增长的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:23:12