Bonjour,
je cherche à modifier dynamiquement la méthode d'une classe en insérant des nouveaux noeuds dans l'ast.
Les sources de documentation que j'utilise sont : https://docs.python.org/3.5/library/ast.html et https://greentreesnakes.readthedocs.io/en/latest/
J'ai la méthode suivante dans la classe C :
def my_method():
return "ok"
Je veux insérer un noeud ast tel que ma méthode devienne :
def my_method():
tempvar = test
return "ok"
Dans mon flot d'exécution j'ai le code suivant :
test = MyObject()
node = ast.parse(C.my_method)
Ici node récupère l'arbre ast de my_method - le code tel quel ne fonctionne pas car il faut récupérer le code source de la méthode, c'est normal mais je vous épargne les détails.
Donc mon problème c'est que je voudrais prendre ma référence "test", et insérer un nouveau noeud dans "node" qui équivaudrait au code suivant :
tempvar = test
Mais attention, "test" est une référence à mon objet instancié plus haut.
Je n'y arrive pas du tout, alors n'ayant pas l'habitude de jouer avec des ast :
1 - est-ce que c'est possible d'insérer une référence dans un noeud ast ?
2 - est-ce que quelqu'un sait le faire ?
Partager