Maison >développement back-end >Tutoriel Python >En quoi les méthodes statiques en Python diffèrent-elles des méthodes d'instance et comment sont-elles invoquées ?
Invocation de méthodes statiques directement à partir d'instances de classe
En Python, les méthodes statiques offrent une approche alternative pour accéder aux méthodes de classe. Elles se comportent différemment des méthodes d'instance dans la mesure où elles ne nécessitent pas d'instanciation et sont accessibles directement via la classe elle-même.
Création de méthodes statiques
Pour définir une méthode statique , le décorateur @staticmethod est utilisé. Ce décorateur supprime l'argument self de la signature de la méthode, indiquant qu'il s'agit d'une méthode statique. L'exemple de code suivant le démontre :
class MyClass(object): @staticmethod def the_static_method(x): print(x)
Invocation de méthodes statiques
Contrairement aux méthodes d'instance, les méthodes statiques peuvent être invoquées directement sur l'instance de classe ou sur la classe lui-même. Les extraits de code suivants illustrent ce comportement :
MyClass.the_static_method(2) # outputs 2 MyClass().the_static_method(2) # also outputs 2
Comparaison avec la définition de méthode statique héritée
Les anciennes versions de Python (2.2 et 2.3) utilisaient une approche différente pour définir méthodes statiques, utilisant staticmethod comme fonction au lieu d'un décorateur. Cependant, cela n'est nécessaire que pour maintenir la compatibilité avec les anciennes implémentations Python :
class MyClass(object): def the_static_method(x): print(x) the_static_method = staticmethod(the_static_method)
Utilisation modérée des méthodes statiques
Il est important de noter que les méthodes statiques doivent être utilisées avec parcimonie. Dans la plupart des cas, des fonctions distinctes de niveau supérieur fournissent une solution plus claire.
Documentation officielle
La documentation Python décrit les méthodes statiques comme suit :
Une méthode statique ne reçoit pas de premier argument implicite. Pour déclarer une méthode statique, utilisez cet idiome :
class C: @staticmethod def f(arg1, arg2, ...): ...Le formulaire @staticmethod est une fonction décorateur – voir la description des définitions de fonctions dans Définitions de fonctions pour détails.
Il peut être appelé soit sur la classe (comme C.f()), soit sur une instance (comme C().f()). L'instance est ignorée sauf pour sa classe.
Les méthodes statiques en Python sont similaires à celles que l'on trouve en Java ou C . Pour un concept plus avancé, voir classmethod().
Pour plus d'informations sur les méthodes statiques, consultez la documentation sur la hiérarchie des types standard dans _La hiérarchie des types standard_.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!