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!