Pyroot 0 0 3_Pretty Printing

This tutorial illustrates the pretty printing feature of PyROOT, which reveals the content of the object if a string representation is requested, e.g., by Python's print statement. The printing behaves similar to the ROOT prompt powered by the C++ interpreter cling.

Author: Stefan Wunsch, Enric Tejedor
This notebook tutorial was automatically generated with ROOTBOOK-izer from the macro found in the ROOT repository on Monday, December 06, 2021 at 09:22 AM.

In [ ]:
import ROOT

Create an object with PyROOT

In [ ]:
obj = ROOT.std.vector("int")(3)
for i in range(obj.size()):
    obj[i] = i

Print the object, which reveals the content. Note that print calls the special method __str__ of the object internally.

In [ ]:
print(obj)

The output can be retrieved as string by any function that triggers the __str__ special method of the object, e.g., str or format.

In [ ]:
print(str(obj))
print("{}".format(obj))

Note that the interactive Python prompt does not call __str__, it calls __repr__, which implements a formal and unique string representation of the object.

In [ ]:
print(repr(obj))
obj

The print output behaves similar to the ROOT prompt, e.g., here for a ROOT histogram.

In [ ]:
hist = ROOT.TH1F("name", "title", 10, 0, 1)
print(hist)

If cling cannot produce any nice representation for the class, we fall back to a "" format, which is what __repr__ returns

In [ ]:
ROOT.gInterpreter.Declare('class MyClass {};')
m = ROOT.MyClass()
print(m)
print(str(m) == repr(m))