diff --git a/include/eigenpy/quaternion.hpp b/include/eigenpy/quaternion.hpp
index 9b89fe2f4a2a7ecc0cbdf0d173ca8fe1ae64631e..5c2c2bfcf5a75133a314efb1312bea53c6f77885 100644
--- a/include/eigenpy/quaternion.hpp
+++ b/include/eigenpy/quaternion.hpp
@@ -110,7 +110,6 @@ namespace eigenpy
     void visit(PyClass& cl) const 
     {
       cl
-      .def(bp::init<>(bp::arg("self"),"Default constructor")[bp::return_value_policy<bp::return_by_value>()])
       .def(bp::init<Matrix3>((bp::arg("self"),bp::arg("R")),
                              "Initialize from rotation matrix.\n"
                              "\tR : a rotation matrix 3x3.")[bp::return_value_policy<bp::return_by_value>()])
@@ -129,6 +128,8 @@ namespace eigenpy
                                            (bp::arg("vec4"))),
            "Initialize from a vector 4D.\n"
            "\tvec4 : a 4D vector representing quaternion coefficients in the order xyzw.")
+      .def("__init__",bp::make_constructor(&QuaternionVisitor::DefaultConstructor),
+           "Default constructor")
       .def(bp::init<Scalar,Scalar,Scalar,Scalar>
            ((bp::arg("self"),bp::arg("w"),bp::arg("x"),bp::arg("y"),bp::arg("z")),
             "Initialize from coefficients.\n\n"
@@ -269,6 +270,11 @@ namespace eigenpy
       return q;
     }
     
+    static Quaternion* DefaultConstructor()
+    {
+      return new Quaternion;
+    }
+    
     static Quaternion* FromOneVector(const Vector4& v)
     {
       Quaternion* q(new Quaternion(v));