From: Guido van Rossum Date: Mon, 8 Sep 1997 02:08:11 +0000 (+0000) Subject: *Semantic change*: when unpickling the instance variables of an X-Git-Tag: v1.5a4~206 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d6ead328b36eb686b95dd9949087dc77a6ff0234;p=thirdparty%2FPython%2Fcpython.git *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! --- diff --git a/Lib/pickle.py b/Lib/pickle.py index 97eb4e45bc8d..7458792cdccc 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