diff --git a/include/eigenpy/copyable.hpp b/include/eigenpy/copyable.hpp
index 4180ccb4e2adedb8adab9c3648e5f3c24340eb6f..f4426d1805cd96cf3bf11e3eb8dc0fd2d2c7f3b3 100644
--- a/include/eigenpy/copyable.hpp
+++ b/include/eigenpy/copyable.hpp
@@ -18,10 +18,13 @@ struct CopyableVisitor : public bp::def_visitor<CopyableVisitor<C> > {
   template <class PyClass>
   void visit(PyClass& cl) const {
     cl.def("copy", &copy, bp::arg("self"), "Returns a copy of *this.");
+    cl.def("__copy__", &copy,bp::arg("self"),"Returns a copy of *this.");
+    cl.def("__deepcopy__", &deepcopy,bp::args("self","memo"),"Returns a deep copy of *this.");
   }
 
  private:
   static C copy(const C& self) { return C(self); }
+  static C deepcopy(const C & self, bp::dict) { return C(self); }
 };
 }  // namespace eigenpy