Python fournit le décorateur @staticmethod pour définir une fonction statique dans une classe. Typiquement, une méthode statique est une méthode qui appartient à une classe plutôt qu'à une instance de classe. C'est une méthode qui peut être appelée sur une classe, et non sur une instance de cette classe.
Considérons un exemple simple où nous avons une classe Math
qui contient une fonction statique pour calculer le carré d'un nombre :
class Math:
@staticmethod
def carre(n):
return n ** 2
# Utilisation de la fonction statique
print(Math.carre(5))
Dans cet exemple, nous avons défini une méthode statique carre(n)
qui prend en argument un nombre et retourne son carré. Notez l'utilisation du décorateur @staticmethod
qui précède la définition de la fonction.
Les méthodes statiques sont utiles lorsque vous avez besoin de fonctionnalités génériques qui n'est pas spécifique à une instance de classe. C'est-à-dire, si vous avez une méthode qui n'interagit pas avec les attributs d'instance ou de classe mais qui appartient conceptuellement à la classe, alors vous voudriez utiliser une méthode statique.
Les méthodes statiques ne peuvent pas accéder à aucun attribut de classe ou d'instance, ce qui les rend limitées dans leurs capacités. En règle générale, elles sont utilisées pour effectuer des opérations utilitaires ou des calculs liés à la classe mais qui n’affectent pas l’état de la classe ou de l’instance.
Respectez le principe de cohésion en classant les méthodes statiques dans des classes où elles sont le plus relatives.
Évitez d'utiliser des méthodes statiques si vous avez besoin d'accéder à des attributs de classe ou d'instance. Sinon, cela pourrait conduire à un code difficile à maintenir et à déboguer.
En conclusion, le décorateur @staticmethod en Python offre un moyen pratique de regrouper des fonctions qui n'interagissent pas avec les attributs de classe ou d'instance mais qui appartiennent, du point de vue de la conception, à la classe.