Ajout dynamique de methodes à une classe ?
Salut tout le monde,
Puisque dans python tout est objet, et que l'on peut également ajouter dynamiquement des attribut à une classe ou une de ses instances, je suppose qu'il doit bien y avoir un moyen d'ajouter de la même manière une ou plusieurs méthodes, non ? Si oui, quelle est-elle please :)?
J'avais beau avoir cherché il y a quelque semaines de ça, je n'avais alors rien trouvé, mais c'est maintenant chose faite. C'est bon :D.
Pour ceux que ç intéresserait, voici la méthode que j'ai trouvé :
Code:
1 2 3 4 5 6 7 8 9 10
| >>> class A(object): pass
>>> import re
>>> def meth(className,functionCode):
comp=re.compile('def (.*?)\(')
methodName=comp.findall(functionCode)[0]
exec(functionCode)
exec("setattr({0},'{1}',classmethod({1}))".format(className,methodName))
>>> meth('A','def foo(cls): print "foo"')
>>> A.foo()
foo |
Je viens juste d'y penser, mais si ça se trouve y'a mieux à faire, donc si vous connaissez mieux, n'hésitez pas :D