@@ -283,17 +283,7 @@ def _reconstruct(x, info, deep, memo=None):
283283 args = deepcopy (args , memo )
284284 y = callable (* args )
285285 memo [id (x )] = y
286- if listiter is not None :
287- for item in listiter :
288- if deep :
289- item = deepcopy (item , memo )
290- y .append (item )
291- if dictiter is not None :
292- for key , value in dictiter :
293- if deep :
294- key = deepcopy (key , memo )
295- value = deepcopy (value , memo )
296- y [key ] = value
286+
297287 if state :
298288 if deep :
299289 state = deepcopy (state , memo )
@@ -309,6 +299,18 @@ def _reconstruct(x, info, deep, memo=None):
309299 if slotstate is not None :
310300 for key , value in slotstate .items ():
311301 setattr (y , key , value )
302+
303+ if listiter is not None :
304+ for item in listiter :
305+ if deep :
306+ item = deepcopy (item , memo )
307+ y .append (item )
308+ if dictiter is not None :
309+ for key , value in dictiter :
310+ if deep :
311+ key = deepcopy (key , memo )
312+ value = deepcopy (value , memo )
313+ y [key ] = value
312314 return y
313315
314316del d
@@ -370,6 +372,16 @@ def __deepcopy__(self, memo=None):
370372 print (map (reprlib .repr , l1 ))
371373 print (map (reprlib .repr , l2 ))
372374 print (map (reprlib .repr , l3 ))
375+ class odict (dict ):
376+ def __init__ (self , d = {}):
377+ self .a = 99
378+ dict .__init__ (self , d )
379+ def __setitem__ (self , k , i ):
380+ dict .__setitem__ (self , k , i )
381+ self .a
382+ o = odict ({"A" : "B" })
383+ x = deepcopy (o )
384+ print (o , x )
373385
374386if __name__ == '__main__' :
375387 _test ()
0 commit comments