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". More... | |
static void * | CPPInstance_AsVoidPtr (PyObject *pyobject) |
Extract the object pointer held by the CPPInstance pyobject. More... | |
static Bool_t | CPPInstance_Check (PyObject *pyobject) |
Test whether the type of the given pyobject is of CPPInstance type or any derived type. More... | |
static Bool_t | CPPInstance_CheckExact (PyObject *pyobject) |
Test whether the type of the given pyobject is CPPinstance type. More... | |
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. More... | |
static Bool_t | CPPOverload_Check (PyObject *pyobject) |
Test whether the type of the given pyobject is of CPPOverload type or any derived type. More... | |
static Bool_t | CPPOverload_CheckExact (PyObject *pyobject) |
Test whether the type of the given pyobject is CPPOverload type. More... | |
static const TPyReturn | Eval (const char *expr) |
Evaluate a python expression (e.g. More... | |
static Bool_t | Exec (const char *cmd) |
Execute a python statement (e.g. "import ROOT"). More... | |
static void | ExecScript (const char *name, int argc=0, const char **argv=0) |
Execute a python stand-alone script, with argv CLI arguments. More... | |
static Bool_t | Import (const char *name) |
Import the named python module and create Cling equivalents for its classes and methods. More... | |
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. More... | |
static void | Prompt () |
Enter an interactive python session (exit with ^D). More... | |
Static Private Member Functions | |
static Bool_t | Initialize () |
Initialization method: setup the python interpreter and load the ROOT module. More... | |
#include <TPython.h>
Bind a ROOT object with, at the python side, the name "label".
Definition at line 439 of file TPython.cxx.
Extract the object pointer held by the CPPInstance pyobject.
Definition at line 533 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPInstance type or any derived type.
Definition at line 480 of file TPython.cxx.
Test whether the type of the given pyobject is CPPinstance type.
Definition at line 493 of file TPython.cxx.
|
static |
Bind the addr to a python object of class defined by classname.
Definition at line 550 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPOverload type or any derived type.
Definition at line 507 of file TPython.cxx.
Test whether the type of the given pyobject is CPPOverload type.
Definition at line 520 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 389 of file TPython.cxx.
|
static |
Execute a python statement (e.g. "import ROOT").
Definition at line 363 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 294 of file TPython.cxx.
|
static |
Import the named python module and create Cling equivalents for its classes and methods.
Definition at line 159 of file TPython.cxx.
|
staticprivate |
Initialization method: setup the python interpreter and load the ROOT module.
Definition at line 106 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 224 of file TPython.cxx.
|
static |
Enter an interactive python session (exit with ^D).
State is preserved between successive calls.
Definition at line 465 of file TPython.cxx.