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