Sobes.tech
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 (self ou cls).
  • 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).