Accessing the Python interpreter from C++.
The TPython class allows for access to python objects from Cling. The current functionality is only basic: ROOT objects and builtin types can freely cross the boundary between the two interpreters, python objects can be instantiated and their methods can be called. All other cross-coding is based on strings that are run on the python interpreter.
Examples:
And with a python file MyPyClass.py
like this:
one can load a python module, and use the class. Casts are necessary as the type information can not be otherwise derived.
It is possible to switch between interpreters by calling TPython::Prompt()
on the Cling side, while returning with ^D
(EOF). State is preserved between successive switches.
The API part provides (direct) C++ access to the bindings functionality of PyROOT. It allows verifying that you deal with a PyROOT python object in the first place (CPPInstance_Check for CPPInstance and any derived types, as well as CPPInstance_CheckExact for CPPInstance's only); and it allows conversions of void*
to an CPPInstance and vice versa.
Public Member Functions | |
virtual | ~TPython () |
Static Public Member Functions | |
static Bool_t | Bind (TObject *object, const char *label) |
Bind a ROOT object with, at the python side, the name "label". | |
static void * | CPPInstance_AsVoidPtr (PyObject *pyobject) |
Extract the object pointer held by the CPPInstance pyobject. | |
static Bool_t | CPPInstance_Check (PyObject *pyobject) |
Test whether the type of the given pyobject is of CPPInstance type or any derived type. | |
static Bool_t | CPPInstance_CheckExact (PyObject *pyobject) |
Test whether the type of the given pyobject is CPPinstance type. | |
static PyObject * | CPPInstance_FromVoidPtr (void *addr, const char *classname, Bool_t python_owns=kFALSE) |
Bind the addr to a python object of class defined by classname. | |
static Bool_t | CPPOverload_Check (PyObject *pyobject) |
Test whether the type of the given pyobject is of CPPOverload type or any derived type. | |
static Bool_t | CPPOverload_CheckExact (PyObject *pyobject) |
Test whether the type of the given pyobject is CPPOverload type. | |
static const TPyReturn | Eval (const char *expr) |
Evaluate a python expression (e.g. | |
static Bool_t | Exec (const char *cmd) |
Execute a python statement (e.g. "import ROOT"). | |
static void | ExecScript (const char *name, int argc=0, const char **argv=0) |
Execute a python stand-alone script, with argv CLI arguments. | |
static Bool_t | Import (const char *name) |
Import the named python module and create Cling equivalents for its classes and methods. | |
static void | LoadMacro (const char *name) |
Execute the give python script as if it were a macro (effectively an execfile in main), and create Cling equivalents for any newly available python classes. | |
static void | Prompt () |
Enter an interactive python session (exit with ^D). | |
Static Private Member Functions | |
static Bool_t | Initialize () |
Initialization method: setup the python interpreter and load the ROOT module. | |
#include <TPython.h>
Bind a ROOT object with, at the python side, the name "label".
Definition at line 447 of file TPython.cxx.
Extract the object pointer held by the CPPInstance pyobject.
Definition at line 541 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPInstance type or any derived type.
Definition at line 488 of file TPython.cxx.
Test whether the type of the given pyobject is CPPinstance type.
Definition at line 501 of file TPython.cxx.
|
static |
Bind the addr to a python object of class defined by classname.
Definition at line 558 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPOverload type or any derived type.
Definition at line 515 of file TPython.cxx.
Test whether the type of the given pyobject is CPPOverload type.
Definition at line 528 of file TPython.cxx.
|
static |
Evaluate a python expression (e.g.
"ROOT.TBrowser()").
Caution: do not hold on to the return value: either store it in a builtin type (implicit casting will work), or in a pointer to a ROOT object (explicit casting to a void* is required).
Definition at line 397 of file TPython.cxx.
|
static |
Execute a python statement (e.g. "import ROOT").
Definition at line 371 of file TPython.cxx.
Execute a python stand-alone script, with argv CLI arguments.
example of use: const char* argv[] = { "1", "2", "3" }; TPython::ExecScript( "test.py", sizeof(argv)/sizeof(argv[0]), argv );
Definition at line 302 of file TPython.cxx.
|
static |
Import the named python module and create Cling equivalents for its classes and methods.
Definition at line 167 of file TPython.cxx.
|
staticprivate |
Initialization method: setup the python interpreter and load the ROOT module.
Definition at line 112 of file TPython.cxx.
|
static |
Execute the give python script as if it were a macro (effectively an execfile in main), and create Cling equivalents for any newly available python classes.
Definition at line 232 of file TPython.cxx.
|
static |
Enter an interactive python session (exit with ^D).
State is preserved between successive calls.
Definition at line 473 of file TPython.cxx.