Python处理对象

2024-06-17 14:59:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个对象,它的属性需要更改。它只有一个名为length的属性。名为transformation的列表中有一些值需要添加到长度中。每个都需要单独添加。因此,对于列表中的4个值,我们将有4个新的“transformed”对象。例如

transformation = [1 2 3 4]
objectSample = ClassSample()
for i in range(0,len(transformation)):
    newObject = ClassSample()
    newObject = TransformUsing(objectSample,transformation[i])
    storeInList(i,newObject)

def TransformUsing(self,obj,transformation):
    obj.length = obj.length + transformation
    return obj

但是,当我第二次在循环上迭代时,长度相加会变得累积,这意味着第一次迭代的效果保持不变。怎么走?你知道吗


Tags: 对象inobj列表for属性rangelength
1条回答
网友
1楼 · 发布于 2024-06-17 14:59:40

我认为你的错误在于:

newObject = TransformUsing(objectSample,transformation[i])

应该是:

newObject = TransformUsing(newObject,transformation[i])

除了您的代码用一个新的ClassSample初始化newObject,然后不使用它之外,发生的事情是,在每次迭代中,您都在修改ClassSample的同一实例,即存储在objectSample中的实例,然后将其重新添加到列表中。i、 例如,您的整个列表由对同一对象的引用组成,因此在每次迭代中,您一次对列表中已经存在的所有对象进行更改。你知道吗

相关问题 更多 >