Python: préparez un sérialiseur pour l'instance de classe:

# jose.py

class BaseObjectSerializer(json.JSONEncoder):

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

#: ...... Autre jugement d'objet

        if isinstance(obj, object):

#: Dictez le champ et #: Ignorer les champs commençant par un trait de soulignement return dict([(k, v) for k, v in obj.dict.items() if not k.startswith('_')])

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

Spécifiez la classe d'encodeur avec la méthode to_json () et faites json.dumps:

# 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)

Seul le résultat de l'ajout est sérialisé et le support au milieu n'est pas sérialisé. ::

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: préparez un sérialiseur pour l'instance de classe:
[Python] classe, instance
classe python, instance
Création d'un wrapper Python pour l'API Qiita
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Implémentation python de la classe de régression linéaire bayésienne
Python: variables de classe et d'instance
Variables de classe et d'instance Python
Ne prenez pas une instance d'une classe d'exception Python directement comme argument de la classe d'exception!
Comment utiliser la méthode __call__ dans la classe Python
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
[Python] Création d'un environnement Python virtuel pour le didacticiel sur la pyramide (résumé)
Créez un Twitter BOT avec le SDK GoogleAppEngine pour Python
Définitions de classe Python et gestion des instances
"La classe d'introduction Python la plus simple" modifiée
[Python] Faire de la fonction une fonction lambda
Voir python pour la première fois
Examiner la classe d'un objet avec python
À quoi sert le trait de soulignement Python (_)?
[Python] Hériter d'une classe avec des variables de classe
Préparer l'environnement pour Atom pour Pythonista
Commande pour le répertoire courant Python
Mémorandum de l'outil de gestion de paquets Python ez_setup
Créer une instance d'une classe prédéfinie à partir d'une chaîne en Python
[Road to Intermediate Python] Appelez une instance de classe comme une fonction avec __call__
Comprendre la classe python Struggle (1) Déplaçons-la pour le moment
Créez un sélecteur de couleurs pour la roue chromatique avec Python + Qt (PySide)
L'histoire de la création d'un pilote standard pour db avec python.
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
Préparez un environnement de test de charge distribué avec l'outil de test de charge Python Locust
Je suis mort en pensant qu'une variable de classe Python était une variable d'instance
Générer une collection de première classe en Python
Présentation du framework BOT Minette pour Python
Préparez un environnement virtuel Python pour votre projet avec venv avec VS Code
Créer un décorateur de fonction Python avec Class
[Python] Comment rendre une classe itérable
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Ecrire le test dans la docstring python
Découvrez les dates du tournoi fou
Créons un environnement virtuel pour Python
Changer la liste dans l'instruction for
Rechercher le labyrinthe avec l'algorithme python A *
Lancez le bot Discord Python pendant 24 heures.
Qt pour l'application de bureau de l'application Python
MongoDB avec Python pour la première fois
[python] Obtenir une liste de variables d'instance
[python] [meta] Le type de python est-il un type?
Obtenez un jeton pour conoha avec python
Pandas du débutant, par le débutant, pour le débutant [Python]
Un outil pour saisir facilement du code Python
Préparer l'environnement de développement pour keyhac pour Mac
Générer une classe à partir d'une chaîne en Python
L'histoire du traitement A du blackjack (python)
[Python] Il était très pratique d'utiliser la classe Python pour le programme ROS.
Obtenez une instance datetime à tout moment de la journée en Python
Une note utile lors de l'utilisation de Python après une longue période