初始化对象的列表属性

时间:2014-07-03 18:48:52

标签: python list object constructor initialization

如何初始化对象实例的列表属性?我收到一条错误说

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是一个整数列表,startfinishwidth是整数。

编辑:

如果没有首先声明self.image = [],则该属性不存在,其中类型为None的变量没有函数append。

2 个答案:

答案 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
相关问题