Ich denke, es gibt zwei Dinge, die Sie wissen müssen, um dieses Code-Snippet zu verstehen.
- JSON-Serialisierung und Deserialisierung.
JSON ist ein Datenaustauschformat. Insbesondere ist es textbasiert, dh wenn Sie Ihre Daten in einer Textdatei speichern wollen, müssen Sie festlegen, wie Sie Ihre Daten als Text darstellen (Serialisierungsprozess). Wenn Sie Daten aus einer Textdatei laden, müssen Sie natürlich auch bestimmen, wie der Text in die Speicherstruktur eingefügt wird (Der Deserialisierungsprozess). Zum Glück, das json
Modul von Python würde standardmäßig die meisten integrierten Datentypen behandeln, zB Skalartyp, Liste, Diktat usw. Aber für Ihren Fall haben Sie einen eigenen Datentyp erstellt, den Sie angeben müssen wie man seinen eigenen Datentyp serialisiert. Das macht die Funktion convert_to_builtin_type
.
- Python-Datenmodell
Nun kommen wir auf das Problem, wie das selbstdefinierte Myobj
Objekt serialisiert werden. Es gibt keine einheitliche Antwort für diese Frage, aber die Grundlinie ist, dass Sie Ihr Objekt (Deserialisierung) durch den serialisierten Text wiederherstellen können. In Ihrem Fall:
d = { '__class__':obj.__class__.__name__,
'__module__':obj.__module__,
}
d.update(obj.__dict__)
Die obj.__dict__
ist ein integriertes Wörterbuch, die Attribute von obj
speichert. Sie können die Python-Dokumentation Data Model lesen, um es zu verstehen. Die Absicht hier ist versuchen, genug Informationen zu geben, um obj
wiederherzustellen. Zum Beispiel:
__class__=<c>
liefert den Namen der Klasse
__module__=<m>
das Modul bietet die Klasse zu finden.
s=<v>
bietet das Attribut und den Wert der Myobj.s
Mit diesen drei, können Sie das Objekt, das Sie zuvor gespeichert erholen. Für diese versteckten (integrierten) Attribute, die mit __
beginnen, müssen Sie das Python-Dokument überprüfen.
Ich hoffe, das wäre hilfreich.
Dies ist das Objektmodell von Python. Sehen Sie sich dieses an: https://docs.python.org/3/reference/datamodel.html – HuStmpHrrr
Sie extrahieren im Grunde Obj Eigenschaften als ein dict, das ist meine Lesung. –