Maison >développement back-end >Tutoriel Python >Quelles sont les différences entre les méthodes liées, non liées et statiques en Python ?

Quelles sont les différences entre les méthodes liées, non liées et statiques en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-15 10:19:02900parcourir

What are the Differences between Bound, Unbound, and Static Methods in Python?

Différences de méthodes de classe en Python : liées, non liées et statiques

En Python, la distinction entre les méthodes liées, non liées et statiques est cruciale pour une conception de classe efficace.

Méthodes liées et non liées

Contrairement à la plupart des autres langages orientés objet, les méthodes de classe Python ne sont pas statiques par défaut. Lorsqu'une instance de classe appelle une fonction membre, elle est traduite en un appel à la méthode indépendante avec l'instance comme premier argument. Par exemple, considérons le code suivant :

class Test(object):
  def method_one(self):
    print "Called method_one"

L'appel de method_one sur une instance a_test entraînera :

a_test.method_one()
=> Test.method_one(a_test)

Méthodes statiques

Pour définir une méthode statique qui est invoqué sur la classe plutôt que sur une instance, utilisez le décorateur @staticmethod. Ce décorateur demande à la métaclasse de créer une méthode indépendante. Par exemple :

class Test(object):
    @staticmethod
    def method_two():
        print "Called method_two"

Maintenant, l'instance et la classe peuvent invoquer method_two :

a_test = Test()
a_test.method_one()
a_test.method_two()
Test.method_two()

L'appel de method_two sans instance ne générera pas d'erreur, contrairement à method_one, qui attend un instance pour y être lié.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn