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 retourner une chaîne de caractères soit un tuple qui contiens deux ou trois éléments.
Le paramètre optionnel contructor, s'il est donné, est un objet appelable qui peux être utilisé pour reconstruire l’objet lorsqu'il est appelé avec un tuple d'arguments retournés par function durant la sérialisation avec pickle. Une exception
TypeError
sera levée si object est une classe ou si constructor n'est pas appelable.Voir le module
pickle
pour plus de détails sur l'interface attendue de function et constructor. Notez que l’attributdispatch_table
d'un objetpickler
ou d'une sous-classe depickle.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(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...