Kaydet (Commit) d16f57bf authored tarafından Antoine Pitrou's avatar Antoine Pitrou

Issue #1515: Enable use of deepcopy() with instance methods. Patch by Robert Collins.

üst c63392c1
...@@ -260,6 +260,10 @@ d[dict] = _deepcopy_dict ...@@ -260,6 +260,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.im_func, deepcopy(x.im_self, memo), x.im_class)
_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.
......
...@@ -672,6 +672,17 @@ class TestCopy(unittest.TestCase): ...@@ -672,6 +672,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.im_self is g)
g.b()
def global_foo(x, y): return x+y def global_foo(x, y): return x+y
......
...@@ -145,6 +145,7 @@ Josh Cogliati ...@@ -145,6 +145,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
......
...@@ -483,6 +483,9 @@ Core and Builtins ...@@ -483,6 +483,9 @@ Core and Builtins
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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment