我已經從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