From d6ead328b36eb686b95dd9949087dc77a6ff0234 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 8 Sep 1997 02:08:11 +0000 Subject: *Semantic change*: when unpickling the instance variables of an instance, use inst.__dict__.update(value) instead of a for loop with setattr() over the value.keys(). This is more consistent (the pickling doesn't use getattr() either but pickles inst.__dict__) and avoids problems with instances that have a __setattr__ hook. But it *is* a semantic change (because the setattr hook is no longer used). So beware! --- Lib/pickle.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Lib/pickle.py b/Lib/pickle.py index 97eb4e4..7458792 100644 --- a/Lib/pickle.py +++ b/Lib/pickle.py @@ -843,8 +843,7 @@ class Unpickler: try: setstate = inst.__setstate__ except AttributeError: - for key in value.keys(): - setattr(inst, key, value[key]) + inst.__dict__.update(value) else: setstate(value) dispatch[BUILD] = load_build -- cgit v0.12