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

Python类实例共享数组问题:如何让每个对象拥有独立数组?

解决每个类实例拥有独立数组的问题

你遇到的问题根源是类变量与实例变量的区别:

  • 在类体中直接定义的_array = []是类变量,所有mittelKlasse的实例会共享这个数组,所以第二个实例初始化时会在第一个实例的数组基础上追加元素,导致长度变成25。
  • 而_depth虽然也在类体定义,但你在__init__里用self._depth = depth将其重新绑定为实例变量,所以每个实例有独立的_depth。

修正方案

把_array的初始化移到__init__方法中,作为实例变量,让每个实例创建自己的数组:

class mittelKlasse:
    def __init__(self, depth):
        self._depth = depth
        self._array = []  # 每个实例初始化时创建独立的空数组
        for i in range(self._depth):
            self._array.append(0)
        self._index = 0
        
        if args.debug > 2:
            print(self._depth, len(self._array))

更简洁的写法

可以直接用列表乘法初始化数组,省去循环步骤:

class mittelKlasse:
    def __init__(self, depth):
        self._depth = depth
        self._array = [0] * depth  # 直接创建指定长度的数组
        self._index = 0
        
        if args.debug > 2:
            print(self._depth, len(self._array))

修改后,每个实例都会拥有独立的_array,调试输出会符合你的预期:5 5和20 20。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 20:56:12