1 :mod:`copy_reg` --- Register :mod:`pickle` support functions 2 ============================================================ 3 4 .. module:: copy_reg 5 :synopsis: Register pickle support functions. 6 7 .. note:: 8 The :mod:`copy_reg` module has been renamed to :mod:`copyreg` in Python 3. 9 The :term:`2to3` tool will automatically adapt imports when converting your 10 sources to Python 3. 11 12 .. index:: 13 module: pickle 14 module: cPickle 15 module: copy 16 17 The :mod:`copy_reg` module offers a way to define functions used while pickling 18 specific objects. The :mod:`pickle`, :mod:`cPickle`, and :mod:`copy` modules 19 use those functions when pickling/copying those objects. The module provides 20 configuration information about object constructors which are not classes. 21 Such constructors may be factory functions or class instances. 22 23 24 .. function:: constructor(object) 25 26 Declares *object* to be a valid constructor. If *object* is not callable (and 27 hence not valid as a constructor), raises :exc:`TypeError`. 28 29 30 .. function:: pickle(type, function[, constructor]) 31 32 Declares that *function* should be used as a "reduction" function for objects of 33 type *type*; *type* must not be a "classic" class object. (Classic classes are 34 handled differently; see the documentation for the :mod:`pickle` module for 35 details.) *function* should return either a string or a tuple containing two or 36 three elements. 37 38 The optional *constructor* parameter, if provided, is a callable object which 39 can be used to reconstruct the object when called with the tuple of arguments 40 returned by *function* at pickling time. :exc:`TypeError` will be raised if 41 *object* is a class or *constructor* is not callable. 42 43 See the :mod:`pickle` module for more details on the interface expected of 44 *function* and *constructor*. 45 46 Example 47 ------- 48 49 The example below would like to show how to register a pickle function and how 50 it will be used: 51 52 >>> import copy_reg, copy, pickle 53 >>> class C(object): 54 ... def __init__(self, a): 55 ... self.a = a 56 ... 57 >>> def pickle_c(c): 58 ... print("pickling a C instance...") 59 ... return C, (c.a,) 60 ... 61 >>> copy_reg.pickle(C, pickle_c) 62 >>> c = C(1) 63 >>> d = copy.copy(c) 64 pickling a C instance... 65 >>> p = pickle.dumps(c) 66 pickling a C instance... 67