diff options
author | Guido van Rossum <guido@python.org> | 1997-10-26 17:00:25 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1997-10-26 17:00:25 (GMT) |
commit | e6eef4b4a3a11b00fe5eae44e1af667de0b138b9 (patch) | |
tree | 63ddac63585f26a5a4f7af9991adfbe4d6e21e9a | |
parent | 040e5652612a96b0046a25ba3f60dc0f8d0aad4d (diff) | |
download | cpython-e6eef4b4a3a11b00fe5eae44e1af667de0b138b9.zip cpython-e6eef4b4a3a11b00fe5eae44e1af667de0b138b9.tar.gz cpython-e6eef4b4a3a11b00fe5eae44e1af667de0b138b9.tar.bz2 |
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.
-rw-r--r-- | Lib/copy.py | 20 |
1 files 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 |