]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
#11481: update copy_reg docs and add example.
authorEzio Melotti <ezio.melotti@gmail.com>
Thu, 8 Nov 2012 08:59:03 +0000 (10:59 +0200)
committerEzio Melotti <ezio.melotti@gmail.com>
Thu, 8 Nov 2012 08:59:03 +0000 (10:59 +0200)
Doc/library/copy_reg.rst

index 80ccb4b72dc322c3302b076a4f9c24a82900ccd4..e145cd58248f222e6f58d8d8b724a3cc69be3362 100644 (file)
    module: cPickle
    module: copy
 
-The :mod:`copy_reg` module provides support for the :mod:`pickle` and
-:mod:`cPickle` modules.  The :mod:`copy` module is likely to use this in the
-future as well.  It provides configuration information about object constructors
-which are not classes.  Such constructors may be factory functions or class
-instances.
+The :mod:`copy_reg` module offers a way to define fuctions used while pickling
+specific objects.  The :mod:`pickle`, :mod:`cPickle, and :mod:`copy` modules
+use those functions when pickling/copying those objects.  The module provides
+configuration information about object constructors which are not classes.
+Such constructors may be factory functions or class instances.
 
 
 .. function:: constructor(object)
@@ -43,3 +43,24 @@ instances.
    See the :mod:`pickle` module for more details on the interface expected of
    *function* and *constructor*.
 
+Example
+-------
+
+The example below would like to show how to register a pickle function and how
+it will be used:
+
+   >>> import copy_reg, copy, pickle
+   >>> class C(object):
+   ...     def __init__(self, a):
+   ...         self.a = a
+   ...
+   >>> def pickle_c(c):
+   ...     print("pickling a C instance...")
+   ...     return C, (c.a,)
+   ...
+   >>> copy_reg.pickle(C, pickle_c)
+   >>> c = C(1)
+   >>> d = copy.copy(c)
+   pickling a C instance...
+   >>> p = pickle.dumps(c)
+   pickling a C instance...