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 ?
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.
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
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)
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!