Kaydet (Commit) e77e5ef2 authored tarafından Fred Drake's avatar Fred Drake

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.
üst 292da58a
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment