Sobes.tech
Junior — Middle

Quelle est la différence entre classmethod et staticmethod en Python?

sobes.tech IA

Réponse de l'IA

classmethod et staticmethod sont deux types de méthodes en Python qui diffèrent par la façon dont elles accèdent à la classe et à ses données.

  • @classmethod — méthode qui reçoit en premier argument la classe elle-même (cls), et non une instance. Cela permet à la méthode de travailler avec la classe, de modifier son état ou de créer de nouvelles instances.

  • @staticmethod — méthode qui ne reçoit automatiquement ni une instance (self) ni une classe (cls). C'est une fonction normale qui est logiquement liée à la classe, mais qui ne dépend pas de son état.

Exemple:

class MyClass:
    count = 0

    def __init__(self):
        MyClass.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

    @staticmethod
    def greet(name):
        return f"Hello, {name}!"

obj = MyClass()
print(MyClass.get_count())  # Affiche le nombre d'objets créés
print(MyClass.greet('Alice'))  # Affiche une salutation

Résumé:

  • classmethod peut modifier ou utiliser l'état de la classe.
  • staticmethod est simplement une fonction à l'intérieur de la classe, qui ne dépend ni de la classe ni d'une instance.