Junior
175
Comment les méthodes statiques sont-elles implémentées en Python?
Réponse de l'IA
sobes.tech IA
La méthode statique n'est pas liée à une instance de la classe ni à la classe elle-même. Elle se comporte comme une fonction ordinaire, mais se trouve dans l'espace de noms de la classe.
Elle est implémentée à l'aide du décorateur @staticmethod.
class MyClass:
def __init__(self, value):
self.value = value
def instance_method(self):
# La méthode d'instance a accès à self
print(f"Méthode d'instance : {self.value}")
@classmethod
def class_method(cls):
# La méthode de classe a accès à la classe via cls
print(f"Méthode de classe : {cls.__name__}")
@staticmethod
def static_method(x, y):
# La méthode statique ne reçoit pas d'argument implicite (self ou cls)
print(f"Méthode statique : {x + y}")
# Appel de la méthode statique
MyClass.static_method(5, 10)
# Peut aussi être appelé via une instance, mais ce n'est pas recommandé
obj = MyClass(20)
obj.static_method(1, 2)
Caractéristiques principales :
- Ne prend pas d'argument implicite (
selfoucls). - N'a pas accès aux attributs de l'instance ou de la classe.
- Se trouve dans l'espace de noms de la classe pour regroupement logique.
- Peut être appelé à la fois via la classe et via une instance (bien que l'appel via la classe soit préféré).
L'objectif principal est de fonctions utilitaires liées à la classe, mais qui ne dépendent pas de l'état d'une instance spécifique ou de la classe elle-même (par exemple, fonctions d'aide, validateurs, générateurs qui appartiennent logiquement à la classe).