Commit b77dc4ec authored by Ezio Melotti's avatar Ezio Melotti

#11481: merge with 3.2.

parents 60e22b9c 78b18d4b
...@@ -67,8 +67,8 @@ of lists by assigning a slice of the entire list, for example, ...@@ -67,8 +67,8 @@ of lists by assigning a slice of the entire list, for example,
Classes can use the same interfaces to control copying that they use to control Classes can use the same interfaces to control copying that they use to control
pickling. See the description of module :mod:`pickle` for information on these pickling. See the description of module :mod:`pickle` for information on these
methods. The :mod:`copy` module does not use the :mod:`copyreg` registration methods. In fact, :mod:`copy` module uses the registered pickle functions from
module. :mod:`copyreg` module.
.. index:: .. index::
single: __copy__() (copy protocol) single: __copy__() (copy protocol)
......
...@@ -9,9 +9,10 @@ ...@@ -9,9 +9,10 @@
module: pickle module: pickle
module: copy module: copy
The :mod:`copyreg` module provides support for the :mod:`pickle` module. The The :mod:`copyreg` module offers a way to define fuctions used while pickling
:mod:`copy` module is likely to use this in the future as well. It provides specific objects. The :mod:`pickle` and :mod:`copy` modules use those functions
configuration information about object constructors which are not classes. 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. Such constructors may be factory functions or class instances.
...@@ -37,3 +38,25 @@ Such constructors may be factory functions or class instances. ...@@ -37,3 +38,25 @@ Such constructors may be factory functions or class instances.
:attr:`~pickle.Pickler.dispatch_table` attribute of a pickler :attr:`~pickle.Pickler.dispatch_table` attribute of a pickler
object or subclass of :class:`pickle.Pickler` can also be used for object or subclass of :class:`pickle.Pickler` can also be used for
declaring reduction functions. declaring reduction functions.
Example
-------
The example below would like to show how to register a pickle function and how
it will be used:
>>> import copyreg, 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,)
...
>>> copyreg.pickle(C, pickle_c)
>>> c = C(1)
>>> d = copy.copy(c)
pickling a C instance...
>>> p = pickle.dumps(c)
pickling a C instance...
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