Attacher des méthodes supplémentaires aux objets Python existants
En Python, il n'est généralement pas conseillé de modifier les méthodes des objets existants, mais dans certaines situations , cela peut être nécessaire. Cet article explique comment ajouter des méthodes aux instances après leur création, en mettant en évidence la distinction entre les fonctions et les méthodes liées.
Comprendre la fonction par rapport à la méthode liée
En Python , les fonctions ne sont pas liées, tandis que les méthodes liées sont associées à une instance spécifique. Lorsqu'une méthode liée est appelée, l'instance est automatiquement passée comme premier argument. Cette liaison se produit lorsque la méthode est définie dans la définition de la classe.
Mise à jour des méthodes au niveau de la classe
La modification des méthodes définies au niveau de la classe est simple. Vous pouvez simplement attribuer une nouvelle fonction à l'attribut méthode de la classe :
class A: def bar(self): print("bar") A.fooFighters = fooFighters
Cette modification s'applique à toutes les instances de la classe, y compris celles existantes.
Ajout d'une instance- Méthodes spécifiques
L'attachement de méthodes à des instances individuelles est plus complexe. L'attribution d'une fonction directement à un attribut d'une instance ne crée pas de méthode liée, ce qui entraîne une erreur lorsqu'elle est appelée avec zéro argument.
Pour créer une méthode liée pour une seule instance, nous pouvons utiliser la fonction MethodType de le module types :
import types a.barFighters = types.MethodType(barFighters, a)
Maintenant, lorsque a.barFighters() est appelé, la méthode est liée à l'instance a, et elle peut être invoquée sans aucun ajout supplémentaire arguments.
Préserver l'isolement de l'instance
Il est important de noter que la modification des méthodes spécifiques à une instance n'affectera pas les autres instances de la même classe. Chaque instance conserve son propre ensemble d'attributs, y compris des méthodes.
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!