Python 用深度副本实现递归
如何在深度复制函数对象中实现递归?这是相关代码(如果您需要更多,请询问): PS:我希望递归遍历经过过滤的引用列表。目标是下载并插入任何缺少的对象 copy.pyPython 用深度副本实现递归,python,pickle,distributed-computing,deep-copy,Python,Pickle,Distributed Computing,Deep Copy,如何在深度复制函数对象中实现递归?这是相关代码(如果您需要更多,请询问): PS:我希望递归遍历经过过滤的引用列表。目标是下载并插入任何缺少的对象 copy.py from put import putter class copier: def __init__(self, base): self.base = base def copyto(self, obj): put = putter(obj) for x in self.base.__dict__:
from put import putter
class copier:
def __init__(self, base):
self.base = base
def copyto(self, obj):
put = putter(obj)
for x in self.base.__dict__:
put(x)
put.py
class putter:
def __init__(self, parent):
self.parent = parent
def put(self, name, obj):
self.parent.__dict__[name] = obj
查看
copy.deepcopy
的文档,如果您可以通过\uuuGetInitArgs\uuuuuuuu()
、\uuuuuuGetState\uuuuuuu()
和\uuuuuuSetState\uuuuuuuuuu()
实现您想要的功能,那么这将为您省去很多悲伤。否则,您需要自己重新实现它,它应该如下所示:
def deepcopyif(obj, shouldcopyprop):
copied = {} # Remember what has already been copied
def impl(obj):
if obj in copied:
return copied[obj]
newobj = *** Create a copy ***
copied[obj] = newobj # IMPORTANT: remember the new object before recursing
for name, value in obj.__dict__: # or whatever...
if shouldcopyprop(obj.__class__, name): # or whatever
value = impl(value) # RECURSION: this will copy the property value
newobj.__dict__[prop] = value
return newobj
return impl(obj)
问题是什么?你希望递归实现什么?那么,我们把一只鸡和一只水母杂交,得到了能产生息肉并产卵的卵?你想实现什么?@thasc和lysdexia,我希望递归遍历一个过滤过的引用列表。目标是下载并插入任何缺少的对象。
put
是一个putter
实例。你的意思是让推杆(obj)推杆吗?。首先编写一些测试将是一个非常好的主意