# `copyreg` — Enregistre les fonctions support de `pickle`

Code source : Lib/copyreg.py

Le module `copyreg` permet de définir des fonctions utilisées durant la sérialisation avec pickle de certains objets. Les modules `pickle` et `copy` utilisent ces fonctions lors d'une sérialisation ou d'une copie de ces objets. Le module propose alors des informations de configuration à propos de constructeurs d'objets qui ne sont pas des classes. De tels constructeurs peuvent être des instances de classes ou des fonctions.

copyreg.constructor(object)

  Déclare object comme étant un constructeur valide. Si object n'est pas appelable (et n'est donc pas un constructeur valide), l'erreur `TypeError` est levée.

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

## Exemple

L'exemple si-dessous essaye de démontrer comment enregistrer une fonction pickle et comment elle sera utilisée :

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