在Python中复制对象

时间:2014-05-15 14:24:02

标签: python python-2.7

我来自javascript背景,最近在Python工作时我遇到了一些麻烦(在JS中)我会称之为对象。

我创建了一个带有init函数的类,它按预期工作:

class TestClass(object):
    def __init__(self,var1,var2,...):
        self.var1 = var1
        self.var2 = var2
        ...

此时可能值得知道,这里传递的大多数变量实际上都是数组。

一切都很棒,我可以随意创建这个对象的实例,它可以按预期工作。对于背景,我这样做:

def make_object(var1,var2,...):
    object = TestClass(var1,var2,...)
    return object
object1 = make_object(var1, var2,...)

var1var2等等都是我稍后将在原地工作的所有数组。 在脚本的后面我这样做:

object2 = object1
object3 = object1

由于存储在这些对象中的值是数组,我使用另一个变量(在脚本的另一部分中计算出来)将数组减少到我需要的元素:

object2.var1 = object2.var1[requiredIndex]
object2.var2 = object2.var2[requiredIndex]
...

我为对象中的每个数组执行此操作,它将数据完美排序 - 只有当我将object3添加到整个等式中并在其上运行类似命令时,才发现这些行:< / p>

object3.var1 = object3.var1[requiredIndex]
object3.var2 = object3.var2[requiredindex]
...

...发现这些行正在对我已使用object2上的相同命令进行了改进的数据进行操作,我测试过并发现它也影响object1所以尽我所能告诉三个对象名称都只是对同一组数据的引用。

我需要object2object3彼此独立(理想情况下,独立于object1)所以我该如何解决这个问题?我希望我已经提供了足够的细节来充分解释我的问题。提前干杯!

1 个答案:

答案 0 :(得分:2)

您可能正在寻找copy.deepcopy

object2 = copy.deepcopy(object1)
object3 = copy.deepcopy(object1)

- &GT;现在你有三个没有共享数据的独立对象。