gpt4 book ai didi

python - 在 Python 中手动克隆/复制实例

转载 作者:行者123 更新时间:2023-11-28 20:10:45 24 4
gpt4 key购买 nike

我知道我们在 copy 模块中同时拥有 copydeepcopy,但我想手动完成...

我首先对 __dict__ 对象进行了一些尝试,只是为了了解如何创建实例来设置与要复制的对象具有的相同属性,这是我第一次测试的结果:

class A(object):
def F(self):
print "Test!"

a = A()
x = type('A', (object, ), dict(A.__dict__))
x.F()

执行时出现如下错误:

TypeError: unbound method F() must be called with A instance as first argument (got nothing instead)

我如何在 Python 中实现方法/函数来克隆/复制(递归)对象?

最佳答案

要手动创建用户定义类 A 实例的浅拷贝,您可以这样做

a = A()
b = object.__new__(A)
b.__dict__ = a.__dict__.copy() # or dict(a.__dict__)

调用 object.__new__() 会在不调用 __init__() 的情况下创建一个新实例。

您的代码构造了一个新类型对象,而不是 A 的新实例。

实现深拷贝要复杂得多——你基本上需要重新实现整个 copycopyreg模块。它们是用 Python 编写的——只需点击链接即可查看源代码。

关于python - 在 Python 中手动克隆/复制实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6414881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com