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

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

DDD
DDDoriginal
2024-11-12 10:16:02682parcourir

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

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

En Python, les méthodes de classe peuvent être classées en trois types : liées, non liées et statiques. Comprendre les distinctions entre ces types est crucial pour une conception de classe et une interaction d'objet efficaces.

Méthodes liées

Les méthodes liées sont associées à une instance spécifique d'une classe. Lorsqu'il est appelé, le premier argument est automatiquement lié à l'instance appelante. Cela permet d'accéder aux attributs et méthodes spécifiques à l'instance dans le cadre de l'exécution de la méthode. Dans l'exemple fourni, method_one est une méthode liée :

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

Lorsqu'elles sont invoquées via une instance, les méthodes liées se comportent comme prévu :

a_test = Test()
a_test.method_one()  # Output: Called method_one

Méthodes non liées

Non liées les méthodes ne sont associées à aucune instance spécifique d’une classe. Lorsqu'il est appelé, le premier argument n'est pas automatiquement lié à une instance et il ne peut pas accéder aux données spécifiques à l'instance. Dans l'exemple, method_two est une méthode non liée :

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

Les tentatives d'invocation de méthodes non liées via des instances entraînent une TypeError puisqu'aucune instance n'est fournie :

a_test = Test()
a_test.method_two()  # Error: TypeError: method_two() takes no arguments (1 given)

Méthodes statiques

Les méthodes statiques ne sont associées à aucune instance ou classe et se comportent comme des fonctions normales. Ils sont accessibles directement depuis la classe ou à l'aide d'instances, mais ils n'ont pas d'accès inhérent aux données spécifiques à l'instance. Les méthodes statiques sont généralement utilisées pour les fonctions utilitaires ou les opérations au niveau de la classe :

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

Les méthodes statiques peuvent être invoquées à la fois sur les instances et sur la classe elle-même :

a_test = Test()
a_test.method_two()  # Output: Called method_two
Test.method_two()  # Output: Called method_two

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