copyreg — Register pickle Unterstützung Funktionen¶
Quellcode: Lib/copyreg.py
Das Modul copyreg bietet eine Möglichkeit, Funktionen zu definieren, die beim Serialisieren spezifischer Objekte verwendet werden. Die Module pickle und copy verwenden diese Funktionen beim Serialisieren/Kopieren dieser Objekte. Das Modul stellt Konfigurationsinformationen über Objektkonstruktoren bereit, die keine Klassen sind. Solche Konstruktoren können Fabrikfunktionen oder Instanzen von Klassen sein.
- copyreg.constructor(object)¶
Deklariert object als gültigen Konstruktor. Wenn object nicht aufrufbar ist (und somit nicht als Konstruktor gültig ist), wird
TypeErrorausgelöst.
- copyreg.pickle(type, function, constructor_ob=None)¶
Deklariert, dass function als "Reduktionsfunktion" für Objekte vom Typ type verwendet werden soll. function muss entweder einen String oder ein Tupel mit zwei bis sechs Elementen zurückgeben. Weitere Details zur Schnittstelle von function finden Sie in der
dispatch_table.Der Parameter constructor_ob ist eine Legacy-Funktion und wird nun ignoriert, muss aber, wenn er übergeben wird, aufrufbar sein.
Beachten Sie, dass das Attribut
dispatch_tableeines Pickler-Objekts oder einer Unterklasse vonpickle.Picklerebenfalls zur Deklaration von Reduktionsfunktionen verwendet werden kann.
Beispiel¶
Das folgende Beispiel soll zeigen, wie eine Pickle-Funktion registriert wird und wie sie verwendet wird
>>> 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...