diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc
index ff987bf8dd508ed4afbaabd49a437b559b2cf2aa..99ad52c8446029607fd613f783b05697ddc6a580 100644
--- a/src/dynamic-graph-py.cc
+++ b/src/dynamic-graph-py.cc
@@ -48,6 +48,7 @@ namespace dynamicgraph {
       extern PyObject* display(PyObject* self, PyObject* args);
       extern PyObject* display(PyObject* self, PyObject* args);
       extern PyObject* getName(PyObject* self, PyObject* args);
+      extern PyObject* getClassName(PyObject* self, PyObject* args);
       extern PyObject* hasSignal(PyObject* self, PyObject* args);
       extern PyObject* getSignal(PyObject* self, PyObject* args);
       extern PyObject* listSignals(PyObject* self, PyObject* args);
@@ -181,6 +182,8 @@ static PyMethodDef dynamicGraphMethods[] = {
    "print an Entity C++ object"},
   {"entity_get_name", dynamicgraph::python::entity::getName, METH_VARARGS,
    "get the name of an Entity"},
+  {"entity_get_class_name", dynamicgraph::python::entity::getClassName, METH_VARARGS,
+   "get the class name of an Entity"},
   {"entity_has_signal", dynamicgraph::python::entity::hasSignal, METH_VARARGS,
    "return True if the entity has a signal with the given name"},
   {"entity_get_signal", dynamicgraph::python::entity::getSignal, METH_VARARGS,
diff --git a/src/entity-py.cc b/src/entity-py.cc
index eef09a6bdccd3681a47cc43f53d3c8170ebe2616..0cdf8f4fa6f18fef33e2b973f4b1b42f5fedb01d 100644
--- a/src/entity-py.cc
+++ b/src/entity-py.cc
@@ -113,6 +113,32 @@ namespace dynamicgraph {
 	return Py_BuildValue("s", name.c_str());
       }
 
+      /**
+	 \brief Get class name of entity
+      */
+      PyObject* getClassName(PyObject* /*self*/, PyObject* args)
+      {
+	PyObject* object = NULL;
+	void* pointer = NULL;
+	std::string name;
+
+	if (!PyArg_ParseTuple(args, "O", &object))
+	  return NULL;
+	if (!PyCObject_Check(object)) {
+	  PyErr_SetString(PyExc_TypeError,
+			  "function takes a PyCObject as argument");
+	  return NULL;
+	}
+
+	pointer = PyCObject_AsVoidPtr(object);
+	Entity* entity = (Entity*)pointer;
+
+	try {
+	 name = entity->getClassName();
+	} CATCH_ALL_EXCEPTIONS();
+	return Py_BuildValue("s", name.c_str());
+      }
+
       /**
          \brief Check if the entity has a signal with the given name
       */