如何初始化对象实例的列表属性?我收到一条错误说
AttributeError: 'Particle' object has no attribute 'image'
我尝试在def行之后立即添加行"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。
答案 0 :(得分: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
查看更多Pythonic实现的其他答案。上面显示的代码简单地解决了问题,只需对OP代码进行最少的修改。
答案 1 :(得分:3)
class Particle(object):
def __init__(self,data,start,finish,width):
self.image = [data[i] for i in range(start,finish)]
self.w = width