首先,我为某些目的编写了一个我需要的课程。我有这个类的几个对象我把它们放在一个列表中。它可能是这样的:
obj0=created_class(0)
obj1=created_class(1)
List_of_obj=[obj0,obj1]
现在我需要列表的深层副本:
Deep_copy=List_of_obj[:]
我的问题是:这会从创建的类中实例化新对象吗?
答案 0 :(得分:0)
切片([:]
)不创建列表的深层副本。
>>> class K:
... def __init__(self, v):
... self.v = v
... def __repr__(self):
... return f'<K: {self.v} ({id(self)})>'
...
>>> l = [K(1), K(2)]
>>> l
[<K: 1 (4556562104)>, <K: 2 (4556562328)>]
>>> l[:]
[<K: 1 (4556562104)>, <K: 2 (4556562328)>]
>>> from copy import deepcopy
>>> deepcopy(l)
[<K: 1 (4556561880)>, <K: 2 (4556560480)>]
注意对象的位置&#39; ID是相同和不同的。
如果您的课程在复制时需要特别小心,您可以从documentation of the copy
module in the standard lib找到更多信息。