copyreg — Hilfsfunktionen für pickle registrieren¶
Quellcode: Lib/copyreg.py
Das Modul copyreg bietet eine Möglichkeit, Funktionen festzulegen, die beim Serialisieren bestimmter Objekte verwendet werden. Die Module pickle und copy greifen beim Serialisieren bzw. Kopieren dieser Objekte auf diese Funktionen zurück. Das Modul stellt Konfigurationsangaben zu Objektkonstruktoren bereit, die keine Klassen sind. Solche Konstruktoren können Factory-Funktionen oder Klasseninstanzen sein.
- copyreg.constructor(object)¶
Erklärt object zu einem gültigen Konstruktor. Ist object nicht aufrufbar und damit als Konstruktor ungültig, wird
TypeErrorausgelöst.
- copyreg.pickle(type, function, constructor_ob=None)¶
Legt fest, dass function als „Reduktionsfunktion“ für Objekte des Typs type verwendet werden soll. function muss entweder eine Zeichenkette oder ein Tupel mit zwei bis sechs Elementen zurückgeben. Näheres zur Schnittstelle von function findest du unter
dispatch_table.Der Parameter constructor_ob stammt aus einer früheren Fassung und wird inzwischen ignoriert. Wird er dennoch übergeben, muss er aufrufbar sein.
Beachte, dass sich Reduktionsfunktionen auch über das Attribut
dispatch_tableeines Pickler-Objekts oder einer Unterklasse vonpickle.Picklerfestlegen lassen.
Beispiel¶
Das folgende Beispiel zeigt, wie eine Pickle-Funktion registriert und anschließend 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...