Classe de données Python :une meilleure façon de stocker des données
Une classe de données Python est une classe Python régulière qui a le @dataclass
décorateur. Il est spécifiquement créé pour contenir des données. Depuis la version 3.7 de Python, Python propose des classes de données via un module intégré appelé dataclass
. Il existe plusieurs avantages par rapport aux classes Python classiques que nous allons explorer dans cet article. Nous examinerons également un exemple de code et quelques opérations courantes que vous pourriez souhaiter effectuer avec des classes de données.
Table des matières
- L'avantage d'utiliser des classes de données
- Exemple de classe de données Python
- Valeurs par défaut
- Convertir une classe de données en JSON
- Continuez à apprendre
L'avantage d'utiliser des classes de données
Pourquoi devriez-vous utiliser une classe de données au lieu d'une classe Python classique ? Voyons d'abord quelques-uns des avantages d'une classe de données Python.
Nécessite une quantité minimale de code
Le @dataclass
décorateur ajoute beaucoup de fonctionnalités à une classe sans ajouter de code visible. Cela permet à votre classe de données d'être très compacte tout en offrant de nombreuses fonctionnalités utiles. Tout ce que vous avez à faire est de définir les champs pour contenir vos données. Vous n'avez pas besoin de définir de fonctions.
Comparaison
Deux classes de données Python peuvent être comparées avec ==
car la soi-disant méthode dunder __eq__ est implémentée automatiquement. En général, nous pouvons comparer n'importe quel objet Python qui implémente cette méthode spéciale à d'autres objets du même type.
Imprimer une classe de données
De même, parce que __repr__
est implémenté, vous pouvez imprimer des classes de données et en obtenir une belle représentation. Ceci est particulièrement utile pour le débogage.
Les classes de données nécessitent des indications de type
Les classes de données sont construites autour du nouveau (plutôt) système de types proposé par Python. L'utilisation d'indications de type réduit les risques de bogues et de comportements inattendus dans votre code. Vous déclarez essentiellement le type de données qui doivent être stockées dans une variable.
Exemple de classe de données Python
Voici un exemple de classe de données en action :
from dataclasses import dataclass @dataclass class Card: rank: str suit: str card1 = Card("Q", "hearts") card2 = Card("Q", "hearts") print(card1 == card2) # True print(card1.rank) # 'Q' print(card1) Card(rank='Q', suit='hearts')
Valeurs par défaut
Une classe de données peut avoir des valeurs par défaut. Attribuer des valeurs par défaut est aussi simple que d'attribuer une valeur à une variable. Par exemple, pour que notre classe Card ait une valeur par défaut de Queen of hearts, nous pouvons procéder comme suit :
from dataclasses import dataclass @dataclass class Card: rank: str = 'Q' suit: str = 'hearts'
Convertir une classe de données en JSON
Un cas d'utilisation courant consiste à convertir votre classe de données bien structurée en JSON. Par exemple, si vous souhaitez exporter les données vers une base de données ou les envoyer au navigateur. La mauvaise nouvelle ici :il n'existe aucun moyen intégré de convertir une classe de données en JSON.
La bonne nouvelle est qu'il existe un package Python appelé dataclasses-json qui simplifie la tâche. Cependant, cela nécessite un décorateur supplémentaire. Vous devrez installer le package avec la commande pip install ou quelque chose comme Pipenv, de préférence dans un environnement virtuel. Par exemple :
$ pip install dataclasses-json
Voici un exemple d'utilisation du package :
from dataclasses import dataclass from dataclasses_json import dataclass_json @dataclass_json @dataclass class Card: rank: str = 'Q' suit: str = 'hearts' card = Card() print(card.to_json())
{"rank": "Q", "suit": "hearts"}
Une autre méthode consiste à utiliser l'héritage Python et à hériter de la classe JSONEncoder pour créer votre propre encodeur personnalisé. L'avantage ici est que vous n'avez pas besoin d'installer un package externe. Vous pouvez apprendre à le faire dans cet article de blog.
Continuez à apprendre
- Le package Python attrs possède une version avancée de la classe de données Python native
- La documentation officielle sur Python.org
- Comment renvoyer plusieurs valeurs en Python
Python
- Types de données Python
- Conversion de type Python et conversion de type
- Opérateurs Python
- Exceptions personnalisées Python
- Programmation orientée objet Python
- Héritage Python
- Comment la consolidation des centres de données change la façon dont nous stockons les données
- type() et isinstance() en Python avec des exemples
- Java - Structures de données