python 2.7 fix
diff --git a/example/example2.cpp b/example/example2.cpp
index c4a352e..580fbc3 100644
--- a/example/example2.cpp
+++ b/example/example2.cpp
@@ -100,7 +100,7 @@
 void init_ex2(py::module &m) {
     /* No constructor is explicitly defined below. An exception is raised when
        trying to construct it directly from Python */
-    py::class_<Example2>(m, "Example2")
+    py::class_<Example2>(m, "Example2", "Example 2 documentation")
         .def("get_dict", &Example2::get_dict, "Return a Python dictionary")
         .def("get_dict_2", &Example2::get_dict_2, "Return a C++ dictionary")
         .def("get_list", &Example2::get_list, "Return a Python list")
diff --git a/include/pybind/pybind.h b/include/pybind/pybind.h
index 45ce9e4..27c888e 100644
--- a/include/pybind/pybind.h
+++ b/include/pybind/pybind.h
@@ -510,6 +510,11 @@
         type->ht_type.tp_as_sequence = &type->as_sequence;
         type->ht_type.tp_as_mapping = &type->as_mapping;
         type->ht_type.tp_base = (PyTypeObject *) parent;
+        if (doc) {
+            size_t size = strlen(doc)+1;
+            type->ht_type.tp_doc = (char *)PyObject_MALLOC(size);
+            memcpy((void *) type->ht_type.tp_doc, doc, size);
+        }
         Py_XINCREF(parent);
 
         if (PyType_Ready(&type->ht_type) < 0)
@@ -525,8 +530,6 @@
         type_info.type_size = type_size;
         type_info.init_holder = init_holder;
         attr("__pybind__") = capsule(&type_info);
-        if (doc)
-            attr("__doc__") = pybind::str(doc);
 
         scope.attr(name) = *this;
     }