Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在初始化对象的列表属性_Python_List_Object_Constructor_Initialization - Fatal编程技术网

Python 正在初始化对象的列表属性

Python 正在初始化对象的列表属性,python,list,object,constructor,initialization,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

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

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))
为了简洁,我没有发布所有代码<代码>数据是一个整数列表,
开始
结束
宽度
是整数

编辑:


如果没有首先声明self.image=[],则属性不存在,使用它时,类型为None的变量没有函数append

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风格的实现。上面显示的代码只需对OP的代码进行少量修改即可解决问题。

有关另一个代码不起作用的原因,请参阅另一个答案。。。基本上,你的肯定更像蟒蛇!:)为了清楚起见,从append分配返回值(如您所说,
None
)不应该导致
AttributeError:“Particle”对象没有属性“image”
错误。只有在根本没有
image
属性的情况下才会发生这种情况,这让人很难相信OP声称添加
self.image=[]
并没有改变任何事情。@merlin2011啊,我明白了,正在更新OP@DSM,我想OP澄清了这一点。我的回答是,添加
self.image=[]
并没有解决他的问题,但不一定会导致同样的错误。
class Particle(object):
    def __init__(self,data,start,finish,width):
        self.image = [data[i] for i in range(start,finish)]
        self.w = width