Python使用对象

时间:2014-10-25 08:21:41

标签: python object

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

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

然而,当我第二次迭代循环时,长度加法变为累积,意味着第一次迭代的效果保持不变。方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为你的错误在于这一行:

newObject = TransformUsing(objectSample,transformation[i])

应该是:

newObject = TransformUsing(newObject,transformation[i])

除了您的代码使用新的newObject初始化ClassSample然后不使用它之外,会发生的事情是每次迭代都要修改相同的实例 of ClassSample,存储在objectSample中,然后将其重新添加到列表中。即,您的整个列表由对同一对象的引用组成,因此在每次迭代中,您可以同时更改列表中已有的所有对象。