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

Barbara Streisand
Libérer: 2024-11-15 10:19:02
original
827 Les gens l'ont consulté

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"
Copier après la connexion

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

a_test.method_one()
=> Test.method_one(a_test)
Copier après la connexion

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"
Copier après la connexion

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

a_test = Test()
a_test.method_one()
a_test.method_two()
Test.method_two()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal