初始化对象的列表属性
我该如何为一个对象的实例初始化一个列表属性?我收到一个错误提示,内容是:
AttributeError: 'Particle' object has no attribute 'image'
我尝试在定义函数的那一行后面加上 "self.image = []"
这一行,但没有任何变化,还是同样的错误。
class Particle(object):
def __init__(self,data,start,finish,width):
for i in range(start,finish):
self.image = self.image.append(data[i])
self.w = width
prtlist = prtlist.append(Particle(samples,int(indices[0]),int(indices[1]),widthcount))
为了简洁,我没有贴出所有代码。data
是一个整数列表,start
、finish
和 width
都是整数。
编辑:
如果不先声明 self.image = []
,这个属性就不存在;加上之后,虽然有了这个变量,但它的类型是 None,所以没有 append 这个功能。
2 个回答
3
这段代码的意思是……
首先,它定义了一个变量,这个变量用来存储一些信息。接下来,它会执行一些操作,比如计算、判断或者循环。最后,它可能会输出结果,让我们看到这些操作的结果是什么。
在编程中,变量就像一个盒子,我们可以把东西放进去,也可以随时拿出来查看或修改。操作就像是对这些盒子里的东西进行处理,输出则是把处理后的结果展示给我们。
总之,这段代码的核心就是通过一些简单的步骤,来完成特定的任务。
class Particle(object):
def __init__(self,data,start,finish,width):
self.image = [data[i] for i in range(start,finish)]
self.w = width
3
append
这个方法会返回None
,也就是说它不会给你返回一个新的列表。在init
函数的开头,你应该先初始化一个列表。之后,只需要把新内容加到这个列表里,而不需要去接收它的返回值。
def __init__(self,data,start,finish,width):
self.image = []
for i in range(start,finish):
self.image.append(data[i])
self.w = width
想要更符合Python风格的写法,可以看看其他的回答。上面这段代码只是简单地修复了原作者代码的问题,修改很少。