Maison >développement back-end >Tutoriel Python >Comment puis-je ajouter des méthodes aux objets Python existants ?

Comment puis-je ajouter des méthodes aux objets Python existants ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-17 14:51:151082parcourir

How Can I Add Methods to Existing Python Objects?

Ajout de méthodes aux instances d'objets existantes en Python

En Python, il est généralement déconseillé d'ajouter des méthodes aux objets existants (c'est-à-dire pas dans la définition de classe). Cependant, il existe quelques exceptions lorsque cela peut être nécessaire.

Méthodes liées et fonctions

En Python, les méthodes se distinguent des fonctions en étant liées à une instance d'objet . Lorsqu'une méthode est appelée, l'instance est automatiquement passée comme premier argument.

Les fonctions, en revanche, ne sont liées à aucune instance spécifique et doivent être explicitement invoquées avec les arguments appropriés.

Modification des attributs de classe

Si vous souhaitez ajouter une méthode à toutes les instances d'une classe, vous pouvez simplement modifier la classe définition :

class A:
    def bar(self):
        print("bar")

a = A()
a.bar()  # Output: "bar"

Modification d'instances individuelles

Cependant, si vous devez ajouter une méthode à une instance spécifique d'une classe, les choses deviennent légèrement plus compliquées. Vous ne pouvez pas attribuer directement une fonction à un attribut d'instance, car elle ne sera pas liée :

def barFighters():
    print("barFighters")

a.barFighters = barFighters
a.barFighters()  # TypeError: barFighters() takes exactly 1 argument

Fonctions de liaison avec MethodType

Pour lier correctement une fonction à une instance d'objet, vous pouvez utiliser la fonction MethodType du module types :

import types

a.barFighters = types.MethodType(barFighters, a)
a.barFighters()  # Output: "barFighters"

Cette liaison de méthode garantit que la fonction est invoquée avec l'instance comme le premier argument lorsqu'il est appelé.

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