Ajout d'une méthode à une instance d'objet existante

J'ai lu qu'il est possible d'ajouter une méthode à un objet existant (c'est-à-dire pas dans la définition de classe) en Python.

Je comprends que ce n'est pas toujours bon de le faire. Mais comment pourrait-on faire cela ?

请先 登录 后评论

2 réponses

HS.

Ce que vous cherchez est setattr je crois. Utilisez ceci pour définir un attribut sur un objet.

>>> def printme(s): print repr(s)
>>> class A: pass
>>> setattr(A,'printme',printme)
>>> a = A()
>>> a.printme() # s becomes the implicit 'self' variable
< __ main __ . A instance at 0xABCDEFG>
请先 登录 后评论
Acuminate

Ce que Jason Pratt a posté est correct.

>>> class Test(object):
...   def a(self):
...     pass
... 
>>> def b(self):
...   pass
... 
>>> Test.b = b
>>> type(b)
<type 'function'>
>>> type(Test.a)
<type 'instancemethod'>
>>> type(Test.b)
<type 'instancemethod'>

Comme vous pouvez le voir, Python ne considère pas b() comme différent de a(). En Python, toutes les méthodes ne sont que des variables qui se trouvent être des fonctions.

请先 登录 后评论