diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc
index 3ba6c146cf3c44460219b91f1954ffd7689cae2d..bf70bbafcb170d6df7e3757b6ad62a10f53b3a82 100644
--- a/src/dynamic-graph-py.cc
+++ b/src/dynamic-graph-py.cc
@@ -38,6 +38,7 @@ namespace dynamicgraph {
     }
     namespace entity {
       extern PyObject* create(PyObject* self, PyObject* args);
+      extern PyObject* display(PyObject* self, PyObject* args);
       extern PyObject* getName(PyObject* self, PyObject* args);
       extern PyObject* getSignal(PyObject* self, PyObject* args);
       extern PyObject* listSignals(PyObject* self, PyObject* args);
@@ -161,6 +162,8 @@ static PyMethodDef dynamicGraphMethods[] = {
   // Entity
   {"create_entity", dynamicgraph::python::entity::create, METH_VARARGS,
    "create an Entity C++ object"},
+  {"display_entity", dynamicgraph::python::entity::display, METH_VARARGS,
+   "print an Entity C++ object"},
   {"entity_get_name", dynamicgraph::python::entity::getName, METH_VARARGS,
    "get the name of an Entity"},
   {"entity_get_signal", dynamicgraph::python::entity::getSignal, METH_VARARGS,
diff --git a/src/dynamic_graph/entity.py b/src/dynamic_graph/entity.py
index baebb3eec74930437fb04240b84423236a549eac..17ae642969094c03efe8f494935786a27098f1ac 100644
--- a/src/dynamic_graph/entity.py
+++ b/src/dynamic_graph/entity.py
@@ -72,6 +72,9 @@ class Entity (object) :
     def name(self) :
         return wrap.entity_get_name(self.obj)
 
+    def __str__(self) :
+        return wrap.display_entity(self.obj)
+
     def signal (self, name) :
         """
         Get a signal of the entity from signal name
diff --git a/src/entity-py.cc b/src/entity-py.cc
index af85ed130c202f2bab523da0e23e82843fbd96eb..a0895a3966ea952d86686aaf371902d0db069dac 100644
--- a/src/entity-py.cc
+++ b/src/entity-py.cc
@@ -505,6 +505,27 @@ namespace dynamicgraph {
 	std::string docstring = command->getDocstring();
 	return Py_BuildValue("s", docstring.c_str());
       }
+
+      PyObject* display(PyObject* /*self*/, PyObject* args)
+      {
+	/* Retrieve the entity instance. */
+	PyObject* object = NULL;
+	if (!PyArg_ParseTuple(args, "O", &object)
+	    || (!PyCObject_Check(object)) )
+	  {
+	    PyErr_SetString(error, "first argument is not an object");
+	    return NULL;
+	  }
+	void* pointer = PyCObject_AsVoidPtr(object);
+	Entity* entity = (Entity*)pointer;
+
+	/* Run the display function. */
+	std::ostringstream oss;
+	entity->display(oss);
+
+	/* Return the resulting string. */
+	return Py_BuildValue("s", oss.str().c_str());
+      }
     }
   }
 }