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
627 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!

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