copyreg — Registrar funciones de soporte de pickle

Código fuente: Lib/copyreg.py


El módulo copyreg ofrece una manera de definir funciones usada cuando se serializan (pickling) objetos específicos.Los módulos pickle y copy utilizan estas funciones cuando se realizan acciones de serializado/copiado en esos objetos. El módulo provee información de configuración acerca de los objetos constructores, los cuales no son clases. Estos objetos constructores pueden ser funciones de fábrica o instancias de clase.

copyreg.constructor(object)

Declara que el object debe ser un constructor válido. Si el object no es invocable (y por lo tanto, no es válido como constructor), lanza una excepción TypeError.

copyreg.pickle(type, function, constructor_ob=None)

Declares that function should be used as a «reduction» function for objects of type type. function should return either a string or a tuple containing two or three elements. See the dispatch_table 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 dispatch_table attribute of a pickler object or subclass of pickle.Pickler can also be used for declaring reduction functions.

Ejemplo

El siguiente ejemplo pretende mostrar cómo registrar una función pickle y cómo se utilizará:

>>> import copyreg, copy, pickle
>>> class C:
...     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...