PaliSkill
← Python avancé

Leçon 4 / 9 — Chapitre 3: POO : méthodes spéciales, propriétés et dataclasses

Méthodes de classe avec @classmethod

Une méthode normale reçoit self (l'objet). Une méthode décorée avec @classmethod reçoit à la place cls (la classe elle-même) — utile pour créer un objet d'une manière alternative, sans passer par __init__ directement.

class Produit:
    def __init__(self, nom, prix):
        self.nom = nom
        self.prix = prix

    @classmethod
    def depuis_texte(cls, texte):
        nom, prix = texte.split(",")
        return cls(nom, float(prix))

p = Produit.depuis_texte("riz,5")
print(p.nom, p.prix)

Ce code affiche riz 5.0. depuis_texte est appelée directement sur la classe (Produit.depuis_texte(...)), pas sur un objet déjà créé — cls désigne Produit, et cls(nom, float(prix)) équivaut à Produit(nom, float(prix)), créant un nouvel objet.

Cette technique offre une manière alternative et nommée de créer un objet, en plus du constructeur standard — pratique quand plusieurs façons de construire un objet ont chacune du sens (ici, depuis une chaîne "nom,prix" plutôt que deux arguments séparés).

L'avantage d'utiliser cls plutôt que d'écrire Produit(...) directement dans la méthode : si une sous-classe hérite de Produit sans redéfinir depuis_texte, cls désigne alors automatiquement la sous-classe, pas Produit.

À vous de jouer : écrivez une méthode de classe depuis_texte qui construit un objet à partir d'une chaîne "nom,valeur", et testez-la.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que l'attestation finale.

9 000 XOF / 13,72 € / 14,95 $

Débloquez les 94 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.