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é:
classmethodpeut modifier ou utiliser l'état de la classe.staticmethodest simplement une fonction à l'intérieur de la classe, qui ne dépend ni de la classe ni d'une instance.