Sobes.tech
Junior — Middle

Quelle est la différence entre l'utilisation de méthodes déclarées comme static et class en Python?

sobes.tech IA

Réponse de l'IA

En Python, les méthodes déclarées avec @staticmethod et @classmethod diffèrent dans leur façon d’accéder aux données de la classe et de l’instance:

  • @staticmethod — c’est une méthode qui ne reçoit automatiquement ni une référence à l’instance (self) ni à la classe (cls). Elle se comporte comme une fonction ordinaire, mais est située à l’intérieur de la classe pour une organisation logique. Elle ne peut pas modifier l’état de la classe ou de l’instance.

  • @classmethod — c’est une méthode qui reçoit en premier argument la classe elle-même (cls), plutôt qu’une instance. Elle permet de travailler avec les attributs de la classe, de créer des constructeurs alternatifs et de modifier l’état de la classe.

Exemple:

class MyClass:
    count = 0

    @staticmethod
    def greet():
        print("Bonjour!")

    @classmethod
    def increment_count(cls):
        cls.count += 1

MyClass.greet()          # Affichera: Bonjour!
MyClass.increment_count()
print(MyClass.count)     # Affichera: 1

Ainsi, staticmethod est simplement une fonction à l’intérieur de la classe, tandis que classmethod est une méthode qui fonctionne avec la classe elle-même.