Logo ROOT  
Reference Guide
TPython Class Reference

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:

$ root -l
// Execute a string of python code.
root [0] TPython::Exec( "print(\'Hello World!\')" );
Hello World!
// Create a TBrowser on the python side, and transfer it back and forth.
// Note the required explicit (void*) cast!
root [1] TBrowser* b = (void*)TPython::Eval( "ROOT.TBrowser()" );
root [2] TPython::Bind( b, "b" );
root [3] b == (void*) TPython::Eval( "b" )
(int)1
// Builtin variables can cross-over by using implicit casts.
root [4] int i = TPython::Eval( "1 + 1" );
root [5] i
(int)2

And with a python file MyPyClass.py like this:

print 'creating class MyPyClass ... '
class MyPyClass:
def __init__( self ):
print 'in MyPyClass.__init__'
def gime( self, what ):
return what

one can load a python module, and use the class. Casts are necessary as the type information can not be otherwise derived.

root [6] TPython::LoadMacro( "MyPyClass.py" );
creating class MyPyClass ...
root [7] MyPyClass m;
in MyPyClass.__init__
root [8] std::string s = (char*)m.gime( "aap" );
root [9] s
(class TString)"aap"

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.

Definition at line 29 of file TPython.h.

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 voidCPPInstance_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 PyObjectCPPInstance_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>

Constructor & Destructor Documentation

◆ ~TPython()

virtual TPython::~TPython ( )
inlinevirtual

Definition at line 76 of file TPython.h.

Member Function Documentation

◆ Bind()

Bool_t TPython::Bind ( TObject object,
const char *  label 
)
static

Bind a ROOT object with, at the python side, the name "label".

Definition at line 445 of file TPython.cxx.

◆ CPPInstance_AsVoidPtr()

void * TPython::CPPInstance_AsVoidPtr ( PyObject pyobject)
static

Extract the object pointer held by the CPPInstance pyobject.

Definition at line 539 of file TPython.cxx.

◆ CPPInstance_Check()

Bool_t TPython::CPPInstance_Check ( PyObject pyobject)
static

Test whether the type of the given pyobject is of CPPInstance type or any derived type.

Definition at line 486 of file TPython.cxx.

◆ CPPInstance_CheckExact()

Bool_t TPython::CPPInstance_CheckExact ( PyObject pyobject)
static

Test whether the type of the given pyobject is CPPinstance type.

Definition at line 499 of file TPython.cxx.

◆ CPPInstance_FromVoidPtr()

PyObject * TPython::CPPInstance_FromVoidPtr ( void addr,
const char *  classname,
Bool_t  python_owns = kFALSE 
)
static

Bind the addr to a python object of class defined by classname.

Definition at line 556 of file TPython.cxx.

◆ CPPOverload_Check()

Bool_t TPython::CPPOverload_Check ( PyObject pyobject)
static

Test whether the type of the given pyobject is of CPPOverload type or any derived type.

Definition at line 513 of file TPython.cxx.

◆ CPPOverload_CheckExact()

Bool_t TPython::CPPOverload_CheckExact ( PyObject pyobject)
static

Test whether the type of the given pyobject is CPPOverload type.

Definition at line 526 of file TPython.cxx.

◆ Eval()

const TPyReturn TPython::Eval ( const char *  expr)
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 395 of file TPython.cxx.

◆ Exec()

Bool_t TPython::Exec ( const char *  cmd)
static

Execute a python statement (e.g. "import ROOT").

Definition at line 369 of file TPython.cxx.

◆ ExecScript()

void TPython::ExecScript ( const char *  name,
int  argc = 0,
const char **  argv = 0 
)
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 300 of file TPython.cxx.

◆ Import()

Bool_t TPython::Import ( const char *  name)
static

Import the named python module and create Cling equivalents for its classes and methods.

Definition at line 165 of file TPython.cxx.

◆ Initialize()

Bool_t TPython::Initialize ( )
staticprivate

Initialization method: setup the python interpreter and load the ROOT module.

Definition at line 112 of file TPython.cxx.

◆ LoadMacro()

void TPython::LoadMacro ( const char *  name)
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 230 of file TPython.cxx.

◆ Prompt()

void TPython::Prompt ( )
static

Enter an interactive python session (exit with ^D).

State is preserved between successive calls.

Definition at line 471 of file TPython.cxx.


The documentation for this class was generated from the following files:
l
auto * l
Definition: textangle.C:4
m
auto * m
Definition: textangle.C:8
TPython::Bind
static Bool_t Bind(TObject *object, const char *label)
Bind a ROOT object with, at the python side, the name "label".
Definition: TPython.cxx:445
TBrowser
Definition: TBrowser.h:37
TPython::Eval
static const TPyReturn Eval(const char *expr)
Evaluate a python expression (e.g.
Definition: TPython.cxx:395
TGeant4Unit::s
static constexpr double s
Definition: TGeant4SystemOfUnits.h:168
TPython::LoadMacro
static void LoadMacro(const char *name)
Execute the give python script as if it were a macro (effectively an execfile in main),...
Definition: TPython.cxx:230
TString
Definition: TString.h:136
b
#define b(i)
Definition: RSha256.hxx:118
TPython::Exec
static Bool_t Exec(const char *cmd)
Execute a python statement (e.g. "import ROOT").
Definition: TPython.cxx:369
int