Source code:
———
The copyreg module offers a way to define functions used while pickling specific objects. The
and
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.
copyreg.constructor(object)
Declares object to be a valid constructor. If object is not callable (and hence not valid as a constructor), raises
.
copyreg.pickle(type, function, constructor_ob=None)
Declares that function should be used as a “reduction” function for objects of type type. function must return either a string or a tuple containing between two and six elements. See the
for more details on the interface of function.
The constructor_ob parameter is a legacy feature and is now ignored, but if passed it must be a callable.
Note that the
attribute of a pickler object or subclass of
can also be used for declaring reduction functions.
Example
The example below would like to show how to register a pickle function and how it will be used:
>>> importcopyreg,copy,pickle>>> classC:... def__init__(self,a):... self.a=a...>>> defpickle_c(c):... print("pickling a C instance...")... returnC,(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...