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=None)

Déclare que function devrait être utilisée en tant que fonction de réduction pour des objets de type type. function doit soit renvoyer une chaîne de caractères soit un n-uplet qui contient deux ou trois éléments.

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.

Voir le module pickle pour plus de détails sur l'interface attendue de function et constructor. Notez que l’attribut dispatch_table d'un objet pickler ou d'une sous-classe de pickle.Pickler peut aussi être utilisée pour déclarer des fonctions réductrices.

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