本文介绍了Python:Deepcopy在用户定义的类上不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在以下示例中,我希望Deepcopy可以创建字段的副本,而不仅仅是复制引用。

In the following example I would expect deepcopy to create a copy of field and not just copy the reference. What happens here and is there an easy way around it?

from copy import deepcopy

class Test:
    field = [(1,2)]

t1 = Test()
t2 = deepcopy(t1)

t2.field[0]=(5,10)

print t1.field # [(1,2)] expected but [(5,10)] obtained
print t2.field # [(5,10)] expected

输出:

[(5, 10)]
[(5, 10)]


推荐答案

深度复制(默认情况下)仅适用于实例级别的属性-不适用于类级别-唯一的<$ c $个以上并没有多大意义c> class.attribute ...

Deep copying (by default) only applies to instance level attributes - not class level - It doesn't make much sense that there's more than one unique class.attribute...

将代码更改为:

class Test:
    def __init__(self):
        self.field = [(1,2)]

这篇关于Python:Deepcopy在用户定义的类上不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-17 07:41