Change example of retrieving & calling a Python function to not use

PyModule_GetDict(), which is also more flexible: it does not assume that the
"module" is a real module.
This commit is contained in:
Fred Drake 2002-04-12 19:04:17 +00:00
parent 292da58a5c
commit e77e5ef2af

View file

@ -178,24 +178,21 @@ as its argument, which is constructed using the
\cfunction{PyString_FromString()} data conversion routine.
\begin{verbatim}
pDict = PyModule_GetDict(pModule);
/* pDict is a borrowed reference */
pFunc = PyDict_GetItemString(pDict, argv[2]);
/* pFun is a borrowed reference */
pFunc = PyObject_GetAttrString(pModule, argv[2]);
/* pFunc is a new reference */
if (pFunc && PyCallable_Check(pFunc)) {
...
}
Py_XDECREF(pFunc);
\end{verbatim}
Once the script is loaded, its dictionary is retrieved with
\cfunction{PyModule_GetDict()}. The dictionary is then searched using
the normal dictionary access routines for the function name. If the
name exists, and the object retunred is callable, you can safely
assume that it is a function. The program then proceeds by
constructing a tuple of arguments as normal. The call to the python
function is then made with:
Once the script is loaded, the name we're looking for is retrieved
using \cfunction{PyObject_GetAttrString()}. If the name exists, and
the object retunred is callable, you can safely assume that it is a
function. The program then proceeds by constructing a tuple of
arguments as normal. The call to the Python function is then made
with:
\begin{verbatim}
pValue = PyObject_CallObject(pFunc, pArgs);