我已经从copy
模块尝试过deepcopy
。它适用于OrderedDict实例和dict子实例。但它不适用于OrderedDict子实例。这里是一个演示:OrderedDict儿童的深层副本
from collections import OrderedDict
from copy import deepcopy
class Example2(dict):
def __init__(self,l):
dict.__init__(self,l)
class Example3(OrderedDict):
def __init__(self,l):
OrderedDict.__init__(self,l)
d1=OrderedDict([(1,1),(2,2)])
print(deepcopy(d1)) #OrderedDict([(1, 1), (2, 2)])
d2=Example2([(1,1),(2,2)])
print(deepcopy(d2)) #{1: 1, 2: 2}
d3=Example3([(1,1),(2,2)])
print(deepcopy(d3))
一两个例子如预期,但与异常的最后一个崩溃:
TypeError: __init__() missing 1 required positional argument: 'l'
所以,问题是:究竟是这里的问题,是有可能完全可以使用deepcopy
函数来处理这种情况?
您需要通过它来itterate和deepcopy的每个元素的自己 – Vajura 2015-03-02 06:05:13