【发布时间】:2021-01-12 16:51:44
【问题描述】:
我有一个自定义类,其属性是不同自定义类的实例列表。我希望能够有效地生成它的完整(即深层)副本。我尝试使用 deepcopy 方法,但速度很慢。最有效的方法是什么?最pythonic的方法是使用deepcopy吗? 如果有人能建议一种让类提供复制自身实例并返回它的方法的好方法,那将是完美的。下面的简单示例是我目前的做法,do_baz 函数在类之外。
import copy
class foo:
def __init__(self, bar):
self.bar = bar
def baz(self):
self.bar = self.bar[::-1]
def do_baz(foo_instance):
new_foo = copy.deepcopy(foo_instance)
new_foo.baz()
return new_foo
bar = [1,2,3]
foo_1 = foo(bar)
foo_2 = do_baz(foo_1)
foo_1.bar, foo_2.bar
输出:
([1, 2, 3], [3, 2, 1])
我能找到的最接近的问题是Most efficient and most Pythonic way to deep copy class instance and perform additional manipulation,但我没有看到如何在这里应用它。
【问题讨论】: