copyreg — Registrera pickle stödfunktioner

Källkod: Lib/copyreg.py


Modulen copyreg erbjuder ett sätt att definiera funktioner som används vid inläggning av specifika objekt. Modulerna pickle och copy använder dessa funktioner när de betar/kopierar dessa objekt. Modulen tillhandahåller konfigurationsinformation om objektkonstruktörer som inte är klasser. Sådana konstruktörer kan vara fabriksfunktioner eller klassinstanser.

copyreg.constructor(object)

Deklarerar att object är en giltig konstruktör. Om object inte är anropsbar (och därmed inte giltig som konstruktör), utlöses TypeError.

copyreg.pickle(type, function, constructor_ob=None)

Deklarerar att function ska användas som en ”reduction”-funktion för objekt av typen type. function måste returnera antingen en sträng eller en tupel som innehåller mellan två och sex element. Se dispatch_table för mer information om gränssnittet för function.

Parametern constructor_ob är en äldre funktion och ignoreras nu, men om den skickas måste den vara en callable.

Observera att attributet dispatch_table för ett pickler-objekt eller en subklass av pickle.Pickler också kan användas för att deklarera reduktionsfunktioner.

Exempel

Exemplet nedan vill visa hur man registrerar en pickle-funktion och hur den kommer att användas:

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