Получить ссылку C на встроенную функцию python по имени? - PullRequest
0 голосов
/ 14 января 2010

Если у меня есть некоторый встроенный код Python, содержащий функцию foo, как лучше всего получить ссылку на эту функцию (для использования с PyObject_CallObject)?

Один из способов заключается в том, чтобы некоторые функции регистрировали каждую функцию вместе с именем функции либо вручную, либо с помощью отражения. Это похоже на излишество.

Другой способ - создать функцию «загрузчик», которая берет имя функции и возвращает ссылку на функцию. Лучше, но я все еще должен зарегистрировать функцию загрузчика с помощью C.

Мне не хватает лучшего способа сделать это с дополнительным кодом Python или без него?

1 Ответ

1 голос
/ 15 января 2010

Прочитайте раздел документации о встраивании Python . Я думаю, у вас есть ссылка на модуль, содержащий функцию. В конце приведен пример, который показывает, как получить ссылку на функцию из объекта.

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

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