This document is for an old version of Python that is no longer supported. You should upgrade, and read the Python documentation for the current stable release.

# `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) objectos 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=None)

  Declara que la function deber ser usada como una función de «reducción» para objetos de tipo type. La function debe retornar ya sea una cadena de caracteres o una tupla que contenga dos o tres elementos.

  The optional constructor parameter, if provided, is a callable object which can be used to reconstruct the object when called with the tuple of arguments returned by function at pickling time. A `TypeError` is raised if the constructor is not callable.

  Consulte el módulo `pickle` para más detalles sobre la interfaz esperada de function y constructor. Note que el atributo `dispatch_table` de un objeto pickler o subclase de `pickle.Pickler` puede también ser utilizado para declarar funciones de reducción.

## 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...