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.