2010-01-14 5 views
0

En supposant que j'ai du code python embarqué contenant une fonction foo, quel est le meilleur moyen d'obtenir une référence à cette fonction (pour une utilisation avec PyObject_CallObject)? Un moyen consiste à avoir une fonction enregistrer chaque fonction avec le nom de la fonction soit manuellement ou par l'utilisation de la réflexion. Cela semble être exagéré.Obtenir une référence C à une fonction python intégrée par son nom?

Une autre façon consiste à créer une fonction "loader" qui prend le nom de la fonction et renvoie une référence à la fonction. Mieux, mais je dois encore enregistrer la fonction du chargeur avec C.

Ai-je une meilleure façon de le faire avec ou sans avoir à écrire du code python supplémentaire?

Répondre

1

Lisez la section dans la documentation sur embedding Python. Je suppose que vous avez une référence au module contenant la fonction. A la fin, il y a un exemple qui montre comment extraire une référence de fonction d'un objet.

pFunc = PyObject_GetAttrString(pModule, argv[2]); 
/* pFunc is a new reference */ 

if (pFunc && PyCallable_Check(pFunc)) { 
    ... 
} 
Py_XDECREF(pFunc); 
Questions connexes