python中copy.deepcopy_Python eval

2022-11-09 14:35:07 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

仅出于教育目的,我尝试实现copy.deepcopy()的克隆函数。在

在玩了一番代码并在谷歌上搜索之后,我想出了以下函数:def my_deepcopy(data):

if isinstance(data, dict):

result = {}

for key, value in data.items():

result[key] = my_deepcopy(value)

assert id(result) != id(data)

elif isinstance(data, list):

result = []

for item in data:

result.append(my_deepcopy(item))

assert id(result) != id(data)

elif isinstance(data, tuple):

aux = []

for item in data:

aux.append(my_deepcopy(item))

result = tuple(aux)

assert id(result) != id(data)

elif isinstance(data, (int, float, type(None), str, bool)):

result = data

else:

raise ValueError(“unexpected type”)

return result

似乎可以使用所有Python原语类型及其组合:

^{pr2}$

到目前为止,还不错,但是Arbitrary Types呢?如何复制任意对象的实例?我如何检测到它?任意类型是否有任何类型的复制构造函数?在

我的函数中缺少什么可以使以下代码正常工作:class Xpto:

pass

arbitrary = [ Xpto(), Xpto() ]

my_deepcopy( arbitrary ) #ValueError(“unexpected type”)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

0 人点赞