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

Python类实例化时如何为每个实例创建独立属性对象

问题根因

你代码中x = np.zeros(10)定义在类的方法外部,属于类属性,会被SAMPLES类的所有实例共享,所有实例操作的都是内存里的同一份numpy数组。
执行b = SAMPLES(0, 10)时,会直接修改这份共享数组索引0位置的值,把之前a实例写入的9覆盖掉,因此最终两个实例访问x[0]拿到的都是最后写入的10。

修复方案

把数组x的初始化逻辑移到__init__构造方法中,绑定到实例self上,让每个实例创建时都生成属于自己的独立数组,实例间的修改就不会互相干扰。

修正后的完整代码:

import numpy as np

class SAMPLES:
    def __init__(self, k, value):
        # 定义为实例属性,每个实例独立持有
        self.x = np.zeros(10)
        self.x[k] = value


a = SAMPLES(0, 9)
b = SAMPLES(0, 10)
print(a.x[0])
print(b.x[0])

运行后输出符合预期:

9.0
10.0
补充说明

类属性和实例属性的核心差异:

  • 类属性:定义在类下、所有类方法外部,全类共享,适合存储所有实例通用的固定配置、常量
  • 实例属性:在__init__方法中绑定到self,每个实例单独持有一份,修改时不会影响其他实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:48:34