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
Libérer: 2024-11-12 10:16:02
original
732 Les gens l'ont consulté

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

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

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

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

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

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

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 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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal