Я экспериментировал с deepcopy
от copy
. Он хорошо работает с экземпляром OrderedDict и с экземпляром ребенка-диктатора. Но это не работает с экземпляром ребенка OrderedDict. Вот демо:Deep copy of OrderedDict child
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