summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/copy_reg.rst31
1 files changed, 26 insertions, 5 deletions
diff --git a/Doc/library/copy_reg.rst b/Doc/library/copy_reg.rst
index 80ccb4b..e145cd5 100644
--- a/Doc/library/copy_reg.rst
+++ b/Doc/library/copy_reg.rst
@@ -14,11 +14,11 @@
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...