Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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_Object - Fatal编程技术网

Python处理对象

Python处理对象,python,object,Python,Object,我有一个属性需要更改的对象。它只有一个名为length的属性。名为transformation的列表中有一些值需要添加到长度中。每个都需要单独添加。因此,对于列表中的4个值,我们将有4个新的“转换”对象。比如说, transformation = [1 2 3 4] objectSample = ClassSample() for i in range(0,len(transformation)): newObject = ClassSample() newObject = Tr

我有一个属性需要更改的对象。它只有一个名为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

但是,当我第二次迭代循环时,长度的增加变得累积,这意味着第一次迭代的效果保持不变。怎么办?

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

newObject = TransformUsing(objectSample,transformation[i])
应该是:

newObject = TransformUsing(newObject,transformation[i])

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

您必须向我们展示一个最小的工作示例,因为您的问题不清楚,可能会以十几种不同的方式进行解释。没有足够的信息来回答,但请注意,由于
transformation
是一个列表,您应该对转换中的项执行
:。。。使用(项目)
而不是索引进行转换。它更像是python。我修改了这个示例来说明更多内容。听起来你需要在循环之前将长度重置为0。