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

  El parámetro opcional constructor, si se proporciona, es un objeto invocable el cual, que puede ser usado para reconstruir el objeto cuando se llama con la tupla de argumentos retornados por la function en el momento de pickling. La excepción `TypeError` se lanzará si el objeto es una clase o si el constructor no es invocable.

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