From cdd47a2753fe549a51c59ba858d3f411a9e8de33 Mon Sep 17 00:00:00 2001 From: Enric Tejedor Saavedra <enric.tejedor.saavedra@cern.ch> Date: Tue, 11 Dec 2018 14:33:47 +0100 Subject: [PATCH] [ROOT-9859] Fall back to __repr__ in __str__ if cling returns an address --- bindings/pyroot/src/Pythonize.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/bindings/pyroot/src/Pythonize.cxx b/bindings/pyroot/src/Pythonize.cxx index c4e9b944411..1a4226e6722 100644 --- a/bindings/pyroot/src/Pythonize.cxx +++ b/bindings/pyroot/src/Pythonize.cxx @@ -2272,7 +2272,13 @@ namespace { Py_XDECREF(cppname); std::string printResult = gInterpreter->ToString(className.c_str(), self->GetObject()); - return PyROOT_PyUnicode_FromString(printResult.c_str()); + if (printResult.find("@0x") == 0) { + // Fall back to __repr__ if we just get an address from cling + auto method = PyObject_GetAttrString((PyObject*)self, "__repr__"); + return PyObject_CallObject(method, nullptr); + } else { + return PyROOT_PyUnicode_FromString(printResult.c_str()); + } } //- Adding array interface to classes --------------- -- GitLab