This tutorial shows how to use the @pythonization
decorator to add extra behaviour to C++ user classes that are used from Python via PyROOT.
import ROOT
from ROOT import pythonization
class MyClass {};
''')
@pythonization('MyClass')
print(my_object)
namespace NS {
class Class1 {};
class Class2 {};
}
''')
@pythonization(['Class1', 'Class2'], ns='NS')
print("Printing new attribute")
for o in o1, o2:
@pythonization('vector<', ns='std', is_prefix=True)
@pythonization('pair<', ns='std', is_prefix=True)
print('Pythonizing class ' + name)
class FirstClass {};
namespace NS {
class SecondClass {};
}
''')
@pythonization('FirstClass')
@pythonization('SecondClass', ns='NS')
print('Executed for class ' + name)
class MyClass2 {};
''')
try:
except AttributeError:
print("Object has not been pythonized yet!")
@pythonization('MyClass2')
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
This is a MyClass object
Printing new attribute
1
1
First element of integer vector: 1
First element of double vector: 4.0
Pythonizing class std::pair<int,int>
Pythonizing class std::pair<int,double>
Executed for class FirstClass
Executed for class NS::SecondClass
Object has not been pythonized yet!
True
- Date
- November 2021
- Author
- Enric Tejedor
Definition in file pyroot002_pythonizationDecorator.py.