From b1c0e3b22991b4efaa9e6be425ce6a12f741e37b Mon Sep 17 00:00:00 2001 From: Ezio Melotti Date: Thu, 8 Nov 2012 10:59:03 +0200 Subject: [PATCH] #11481: update copy_reg docs and add example. --- Doc/library/copy_reg.rst | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/Doc/library/copy_reg.rst b/Doc/library/copy_reg.rst index 80ccb4b72dc..e145cd58248 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...