Merged revisions 76571 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r76571 | antoine.pitrou | 2009-11-28 16:55:58 +0100 (sam., 28 nov. 2009) | 3 lines

  Issue #1515: Enable use of deepcopy() with instance methods.  Patch by Robert Collins.
........
This commit is contained in:
Antoine Pitrou 2009-11-28 15:58:27 +00:00
parent 38478d8654
commit 1fc0d2b364
4 changed files with 19 additions and 0 deletions

View File

@ -238,6 +238,10 @@ d[dict] = _deepcopy_dict
if PyStringMap is not None: if PyStringMap is not None:
d[PyStringMap] = _deepcopy_dict d[PyStringMap] = _deepcopy_dict
def _deepcopy_method(x, memo): # Copy instance methods
return type(x)(x.__func__, deepcopy(x.__self__, memo))
_deepcopy_dispatch[types.MethodType] = _deepcopy_method
def _keep_alive(x, memo): def _keep_alive(x, memo):
"""Keeps a reference to the object x in the memo. """Keeps a reference to the object x in the memo.

View File

@ -677,6 +677,17 @@ class TestCopy(unittest.TestCase):
del d del d
self.assertEqual(len(v), 1) self.assertEqual(len(v), 1)
def test_deepcopy_bound_method(self):
class Foo(object):
def m(self):
pass
f = Foo()
f.b = f.m
g = copy.deepcopy(f)
self.assertEqual(g.m, g.b)
self.assertTrue(g.b.__self__ is g)
g.b()
def global_foo(x, y): return x+y def global_foo(x, y): return x+y

View File

@ -144,6 +144,7 @@ Josh Cogliati
Dave Cole Dave Cole
Benjamin Collar Benjamin Collar
Jeffery Collins Jeffery Collins
Robert Collins
Paul Colomiets Paul Colomiets
Matt Conway Matt Conway
David M. Cooke David M. Cooke

View File

@ -140,6 +140,9 @@ C-API
Library Library
------- -------
- Issue #1515: Enable use of deepcopy() with instance methods. Patch by
Robert Collins.
- Issue #7403: logging: Fixed possible race condition in lock creation. - Issue #7403: logging: Fixed possible race condition in lock creation.
- Issue #6845: Add restart support for binary upload in ftplib. The - Issue #6845: Add restart support for binary upload in ftplib. The