Classes de données en Python

Vaibhav Vaibhav 4 décembre 2021
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.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python Class

Article connexe - Python Dataclass