Classes de données en Python
Les classes générales trouvées dans Python ou tout autre langage de programmation sont conçues pour représenter une entité. Puisqu’ils représentent une entité, ils sont remplis de nombreuses fonctions, logiques et attributs, où chaque fonction exécute une tâche spécifique, et les attributs de classe sont manipulés à l’aide des fonctions de classe.
Outre les classes générales, il existe encore un autre type de classe, à savoir la classe de données. Cet article parlera des classes de données trouvées non seulement dans Python mais aussi dans d’autres langages de programmation.
Python DataClass
Contrairement à ces classes régulières, les classes de données sont destinées à stocker l’état d’une entité. Ils ne contiennent pas beaucoup de logique. Ils stockent des données qui représentent les statistiques d’un objet ou d’une entité.
Comprenons mieux les classes de données avec un exemple. Par exemple, vous écrivez un programme qui essaie d’imiter le comportement d’un panier d’achat dans un magasin de vêtements. Le panier contiendra des produits ou des vêtements. Considérez qu’il existe trois types de vêtements, à savoir Chapeaux
, Topwear
et Bottomwear
. Étant donné que tous les sexes ne peuvent pas porter tous les vêtements, nous avons également des informations sur le sexe pour lequel un vêtement est fabriqué. Considérons seulement trois catégories : Homme
, Femme
et Neutre(Les deux peuvent le porter)
. Chaque produit a un nom, un prix, une taille et une entreprise par laquelle il a été fabriqué.
Maintenant, si nous devons créer un programme pour imiter un panier, nous pouvons créer deux classes, à savoir ShoppingCart
et Product
. La classe ShoppingCart
contiendra toute la logique, comme l’ajout et la suppression de produits, la manipulation du nombre de produits, le suivi des produits présents dans le panier, etc. Et, un seul produit sera représenté par la classe Product
. Product
est une classe de données, et il ne représentera qu’un produit.
La classe Product
ressemblera à ceci.
class Product:
"""
A class representing a product
"""
def __init__(self, name, price, size, company, wearType, gender):
self.name = name
self.price = price
self.size = size
self.company = company
self.wearType = wearType
self.gender = gender
def __hash__(self):
"""
Returns a hash code for the class object
"""
return hash(
(self.name, self.price, self.size, self.company, self.wearType, self.gender)
)
def __eq__(self, other):
"""
Checks weather two objects are equal or not
"""
if not isinstance(other, Product):
return False
else:
return (
self.name,
self.price,
self.size,
self.company,
self.wearType,
self.gender,
) == (
other.name,
other.price,
other.size,
other.company,
other.wearType,
other.gender,
)
Comme vous pouvez le voir, la classe Product
n’a aucune logique. Il ne fait que représenter un produit. Voici à quoi ressemble une classe de données, juste des attributs et une logique minimale.
Les deux fonctions implémentées sont nécessaires si l’on veut que la classe de données soit hachable. Lorsqu’une classe est hachable, son objet peut être utilisé comme clé dans le dictionnaire et peut être mappé à des valeurs fixes. Étant donné qu’un code de hachage sera nécessaire pour mapper les valeurs, ces deux fonctions sont essentielles.
On peut aussi implémenter la fonction __repr__
, une méthode particulière qui renvoie la représentation sous forme de chaîne d’un objet de classe.
Article connexe - Python Class
- Utiliser getitem en Python
- Arguments optionnels pour un constructeur de classe en Python
- Invoquer le super constructeur de la classe parent en Python
- Python new mot-clé
- Créer une sous-classe à partir d'une superclasse en Python