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