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 () |
virtual TClass * | IsA () const |
virtual void | Streamer (TBuffer &) |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
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 TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
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 char * | DeclFileName () |
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=nullptr) |
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 476 of file TPython.cxx.
|
static |
|
inlinestaticconstexpr |
|
static |
Extract the object pointer held by the CPPInstance pyobject.
Definition at line 570 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPInstance type or any derived type.
Definition at line 517 of file TPython.cxx.
Test whether the type of the given pyobject is CPPinstance type.
Definition at line 530 of file TPython.cxx.
|
static |
Bind the addr to a python object of class defined by classname.
Definition at line 587 of file TPython.cxx.
Test whether the type of the given pyobject is of CPPOverload type or any derived type.
Definition at line 544 of file TPython.cxx.
Test whether the type of the given pyobject is CPPOverload type.
Definition at line 557 of file TPython.cxx.
|
inlinestatic |
|
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 426 of file TPython.cxx.
|
static |
Execute a python statement (e.g. "import ROOT").
Definition at line 400 of file TPython.cxx.
|
static |
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 333 of file TPython.cxx.
|
static |
Import the named python module and create Cling equivalents for its classes and methods.
Definition at line 198 of file TPython.cxx.
|
staticprivate |
Initialization method: setup the python interpreter and load the ROOT module.
Definition at line 112 of file TPython.cxx.
|
inlinevirtual |
|
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 263 of file TPython.cxx.
|
static |
Enter an interactive python session (exit with ^D).
State is preserved between successive calls.
Definition at line 502 of file TPython.cxx.
|
virtual |
|
inline |