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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-13 00:24:02308parcourir

What are the differences between unbound, bound, and static methods in Python classes?

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

En Python, les méthodes de classe peuvent être classées en trois types : non liées, lié et statique. Comprendre leurs distinctions est crucial pour une programmation orientée objet efficace.

Méthodes liées

Les méthodes liées sont celles qui nécessitent une instance de la classe comme premier argument lorsqu'elles sont invoquées. Par exemple, la méthode method_one dans le code suivant est une méthode liée :

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

Pour appeler une méthode liée, une instance de la classe doit être fournie. Par exemple :

a_test = Test()
a_test.method_one()

Méthodes non liées

Les méthodes non liées sont essentiellement des méthodes de classe qui n'ont pas été liées à une instance de la classe. En Python, toutes les méthodes de classe ne sont initialement pas liées. Par exemple, la méthode method_two dans l'extrait de code ci-dessous est une méthode indépendante :

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

Les méthodes indépendantes ne peuvent pas être appelées directement sur les instances de la classe. Au lieu de cela, ils doivent être liés à une instance avant d'être invoqués. Ceci peut être réalisé en utilisant le nom de la classe comme premier argument, comme indiqué ci-dessous :

Test.method_two()

Méthodes statiques

Les méthodes statiques sont des méthodes qui ne sont pas liées à une instance d'une classe et ne nécessitent pas d'instance comme premier argument. Ils sont déclarés à l'aide du décorateur @staticmethod. Par exemple :

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

Les méthodes statiques peuvent être appelées directement sur la classe ou sur une instance de la classe. Par exemple :

Test.method_three()
a_test = Test()
a_test.method_three()

Résumé

En résumé, la principale différence entre les méthodes de classe en Python réside dans leur statut de liaison. Les méthodes liées nécessitent une instance comme premier argument, les méthodes non liées doivent être liées à une instance avant d'être invoquées, et les méthodes statiques ne sont pas liées aux instances et ne nécessitent pas d'instance comme argument.

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