Python 用深度副本实现递归

Python 用深度副本实现递归,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__:

如何在深度复制函数对象中实现递归?这是相关代码(如果您需要更多,请询问): 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__:
      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)推杆吗?。首先编写一些测试将是一个非常好的主意