From e6eef4b4a3a11b00fe5eae44e1af667de0b138b9 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sun, 26 Oct 1997 17:00:25 +0000 Subject: Use __dict__.update(state) instead of for loop over state.items() and call to setattr(). This changes semantics, following the change already implemented in pickle. Also reindented a few lines properly. --- Lib/copy.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/Lib/copy.py b/Lib/copy.py index ef15982..51c375d 100644 --- a/Lib/copy.py +++ b/Lib/copy.py @@ -111,14 +111,13 @@ def _copy_inst(x): args = () y = apply(x.__class__, args) if hasattr(x, '__getstate__'): - state = x.__getstate__() + state = x.__getstate__() else: - state = x.__dict__ + state = x.__dict__ if hasattr(y, '__setstate__'): - y.__setstate__(state) + y.__setstate__(state) else: - for key in state.keys(): - setattr(y, key, state[key]) + y.__dict__.update(state) return y d[types.InstanceType] = _copy_inst @@ -225,16 +224,15 @@ def _deepcopy_inst(x, memo): y = apply(x.__class__, args) memo[id(x)] = y if hasattr(x, '__getstate__'): - state = x.__getstate__() - _keep_alive(state, memo) + state = x.__getstate__() + _keep_alive(state, memo) else: - state = x.__dict__ + state = x.__dict__ state = deepcopy(state, memo) if hasattr(y, '__setstate__'): - y.__setstate__(state) + y.__setstate__(state) else: - for key in state.keys(): - setattr(y, key, state[key]) + y.__dict__.update(state) return y d[types.InstanceType] = _deepcopy_inst -- cgit v0.12