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

如何访问Python类中存储的数组 调用实例属性返回空数组解决方案

问题根因

fill_particles类的__init__方法仅完成了particles空列表的初始化,负责执行循环填充逻辑的fill()方法没有被触发调用,直接访问实例的particles属性自然只能拿到初始的空数组。
另外如果每次访问属性都重新写fill_particles().particles,相当于每次都创建一个全新的未填充实例,哪怕之前给其他实例填过内容,新实例的属性依然是空的。

修复方案

方案1:实例化后手动调用填充方法

先创建类实例,主动调用fill()完成数组填充后,再访问particles属性,参考代码:

class particle(object):
  def __init__(self,x,y,z):
    self.x=x
    self.y=y
    self.z=z

class fill_particles():
   def __init__(self):
    self.particles=[]
     
   def fill(self):
    for i in range(5):
      self.particles.append(particle(i,i+1,i+2))

# 调用示例
p = fill_particles()
p.fill() # 执行填充逻辑
print(p.particles) # 此时可拿到填充完成的5个particle对象

方案2:初始化时自动执行填充

如果希望创建实例时就自动完成填充,不需要手动调用方法,可以在__init__方法末尾直接调用fill(),参考代码:

class fill_particles():
   def __init__(self):
    self.particles=[]
    self.fill() # 实例初始化时自动触发填充
     
   def fill(self):
    for i in range(5):
      self.particles.append(particle(i,i+1,i+2))

# 调用示例
p = fill_particles()
print(p.particles) # 实例创建完成时已经填充完毕,直接访问即可
避坑提示

不要每次访问属性都重新实例化类,必须持有填充完成的那个实例的引用,再去访问它的particles属性,否则永远拿到的是新实例的空列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:31:02