PaliSkill
Python avancé

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

Méthodes statiques avec @staticmethod

Une méthode décorée avec @staticmethod ne reçoit ni self ni cls : elle se comporte comme une fonction normale, simplement regroupée dans la classe parce qu'elle est logiquement liée à son thème.

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

    @staticmethod
    def prix_valide(prix):
        return prix > 0

if Produit.prix_valide(5):
    p = Produit("riz", 5)
    print("Produit cree")

Ce code affiche Produit cree : prix_valide ne dépend d'aucun objet ni de la classe elle-même, seulement de l'argument prix reçu — elle aurait tout aussi bien pu être une fonction indépendante, en dehors de la classe, mais la regrouper avec Produit indique clairement qu'elle concerne la validation d'un prix de produit.

Produit.prix_valide(5) s'appelle directement sur la classe, sans avoir besoin de créer d'objet au préalable — contrairement à une méthode normale, qui exige toujours un objet existant pour être appelée.

Repère utile pour choisir entre les trois : une méthode normale a besoin de self (accède aux attributs de l'objet) ; @classmethod a besoin de cls (crée ou manipule la classe elle-même) ; @staticmethod n'a besoin ni de l'un ni de l'autre.

À vous de jouer : ajoutez une méthode statique qui valide une donnée sans dépendre d'un objet précis, et appelez-la directement sur la classe.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

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

Votre paiement est vérifié avant l'activation de l'accès