Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:

# jose.py

class BaseObjectSerializer(json.JSONEncoder):

    def default(self, obj):
        if isinstance(obj, Enum):
            return obj.value

#: ...... Andere Objektbeurteilung

        if isinstance(obj, object):

#: Diktiere das Feld und #: Felder ignorieren, die mit einem Unterstrich beginnen return dict([(k, v) for k, v in obj.dict.items() if not k.startswith('_')])

        return super(BaseObjectSerializer, self).default(obj)

Geben Sie die Encoder-Klasse mit der Methode to_json () an und führen Sie json.dumps aus:

# jose.py 

class BaseObject(object):
    _serializer = BaseObjectSerializer    

    def to_json(self, *args, **kwargs):
        kwargs['cls'] = self._serializer    #: Custom Serializer
        return json.dumps(self, *args, **kwargs)

Nur das Ergebnis der Addition wird serialisiert, und der Halter in der Mitte wird nicht serialisiert. :: ::

from jose import BaseObject


class Message(BaseObject):

    def __init__(self, *args, **kwargs):
        super(Message, self).__init__(*args, **kwargs)
        self.total = 0 
        self._x =0
        self._y =0

    def sum(self, x, y): 
        self._x = x 
        self._y = y 
        self.total = self._x + self._y


m = Message()
m.sum(3, 4)
assert m.total == 7
assert m.to_json() == '{"total": 7}'
assert m._x == 3

m2 = Message()
assert m2._x == 0

Recommended Posts

Python: Bereiten Sie einen Serializer für die Klasseninstanz vor:
[Python] -Klasse, Instanz
Python-Klasse, Instanz
Erstellt einen Python-Wrapper für die Qiita-API
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Python-Implementierung der Bayes'schen linearen Regressionsklasse
Python: Klassen- und Instanzvariablen
Python-Klassen- und Instanzvariablen
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!
Verwendung der Methode __call__ in der Python-Klasse
Probieren Sie die ähnliche Suche von Image Search mit Python SDK [Search] aus.
[Python] Erstellen einer virtuellen Python-Umgebung für das Pyramiden-Tutorial (Zusammenfassung)
Erstellen Sie einen Twitter-BOT mit dem GoogleAppEngine SDK für Python
Python-Klassendefinitionen und Instanzbehandlung
"Die einfachste Python-Einführungsklasse" geändert
[Python] Machen Sie die Funktion zu einer Lambda-Funktion
Siehe Python zum ersten Mal
Untersuchen Sie die Klasse eines Objekts mit Python
Wofür ist der Python-Unterstrich (_)?
[Python] Erbt eine Klasse mit Klassenvariablen
Bereiten Sie die Umgebung für Atom für Pythonista vor
Befehl für das aktuelle Verzeichnis Python
Memorandum des Python-Paketverwaltungstools ez_setup
Erstellen Sie eine Instanz einer vordefinierten Klasse aus einer Zeichenfolge in Python
[Road to Intermediate Python] Rufen Sie eine Klasseninstanz wie eine Funktion mit __call__ auf
Grundlegendes zur Python-Klasse Kampf (1) Verschieben wir sie vorerst
Erstellen Sie mit Python + Qt (PySide) einen Farbwähler für das Farbrad.
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Ich habe versucht, ein Gerüstwerkzeug für Python Web Framework Bottle zu erstellen
Bereiten Sie eine verteilte Lasttestumgebung mit dem Python-Lasttest-Tool Locust vor
Ich bin gestorben, weil ich dachte, eine Python-Klassenvariable sei eine Instanzvariable
Generieren Sie eine erstklassige Sammlung in Python
Einführung in das BOT-Framework Minette für Python
Bereiten Sie mit venv mit VS Code eine virtuelle Python-Umgebung für Ihr Projekt vor
Erstellen Sie mit Class einen Python-Funktionsdekorator
[Python] Wie man eine Klasse iterierbar macht
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Finde die Daten des verrückten Turniers heraus
Erstellen wir eine virtuelle Umgebung für Python
Ändern Sie die Liste in der for-Anweisung
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Starten Sie den Discord Python-Bot 24 Stunden lang.
Qt für Python App Desktop App
MongoDB mit Python zum ersten Mal
[Python] Ruft eine Liste der Instanzvariablen ab
[Python] [Meta] Ist der Python-Typ ein Typ?
Holen Sie sich ein Zeichen für Conoha mit Python
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Ein Tool zur einfachen Eingabe von Python-Code
Bereiten Sie die Entwicklungsumgebung für keyhac für Mac vor
Generieren Sie eine Klasse aus einer Zeichenfolge in Python
Die Geschichte der Verarbeitung A von Blackjack (Python)
[Python] Es war sehr praktisch, die Python-Klasse für das ROS-Programm zu verwenden.
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden