Ajout dynamique de méthodes aux objets Python existants
Contrairement aux méthodes définies par classe, il est généralement déconseillé d'ajouter des méthodes aux objets existants en Python. Cependant, il existe des scénarios dans lesquels cela peut être nécessaire.
Comprendre les fonctions et les méthodes liées
En Python, les fonctions sont distinctes des méthodes liées. Les méthodes liées sont associées à une instance et la transmettent comme premier argument à la méthode. Les fonctions, en revanche, ne sont pas liées.
Modification des attributs de classe
Vous pouvez ajouter une méthode à une classe en modifiant sa définition :
class A: def foo(self): print("foo") A.fooFighters = fooFighters # Attach the fooFighters function as a method
Cela mettra à jour toutes les instances de la classe A, y compris celles existantes.
Attacher des méthodes à Instances
Pour attacher une méthode à une instance spécifique, vous pouvez utiliser la fonction types.MethodType :
import types a.barFighters = types.MethodType(barFighters, a) # Bind the barFighters function to instance a
Cela garantit que la méthode est correctement liée à l'instance.
Limitations
Bien qu'il soit possible d'ajouter dynamiquement des méthodes à instances, il y a des limitations :
Alternatives
Au lieu d'ajouter des méthodes directement aux objets, envisagez les alternatives suivantes :
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!