diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index dd35c10..e82014b 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -687,12 +687,6 @@
 	return self->size;
 }
 
-static PyObject *
-mmap_object_getattr(mmap_object *self, char *name)
-{
-	return Py_FindMethod(mmap_object_methods, (PyObject *)self, name);
-}
-
 static Py_ssize_t
 mmap_length(mmap_object *self)
 {
@@ -980,6 +974,30 @@
 	(charbufferproc)mmap_buffer_getcharbuffer,
 };
 
+PyDoc_STRVAR(mmap_doc,
+"Windows: mmap(fileno, length[, tagname[, access[, offset]]])\n\
+\n\
+Maps length bytes from the file specified by the file handle fileno,\n\
+and returns a mmap object.  If length is larger than the current size\n\
+of the file, the file is extended to contain length bytes.  If length\n\
+is 0, the maximum length of the map is the current size of the file,\n\
+except that if the file is empty Windows raises an exception (you cannot\n\
+create an empty mapping on Windows).\n\
+\n\
+Unix: mmap(fileno, length[, flags[, prot[, access[, offset]]]])\n\
+\n\
+Maps length bytes from the file specified by the file descriptor fileno,\n\
+and returns a mmap object.  If length is 0, the maximum length of the map\n\
+will be the current size of the file when mmap is called.\n\
+flags specifies the nature of the mapping. MAP_PRIVATE creates a\n\
+private copy-on-write mapping, so changes to the contents of the mmap\n\
+object will be private to this process, and MAP_SHARED`creates a mapping\n\
+that's shared with all other processes mapping the same areas of the file.\n\
+The default value is MAP_SHARED.\n\
+\n\
+To map anonymous memory, pass -1 as the fileno (both versions).");
+
+
 static PyTypeObject mmap_object_type = {
 	PyVarObject_HEAD_INIT(0, 0) /* patched in module init */
 	"mmap.mmap",				/* tp_name */
@@ -988,7 +1006,7 @@
 	/* methods */
 	(destructor) mmap_object_dealloc,	/* tp_dealloc */
 	0,					/* tp_print */
-	(getattrfunc) mmap_object_getattr,	/* tp_getattr */
+	0,					/* tp_getattr */
 	0,					/* tp_setattr */
 	0,					/* tp_compare */
 	0,					/* tp_repr */
@@ -998,11 +1016,19 @@
 	0,					/*tp_hash*/
 	0,					/*tp_call*/
 	0,					/*tp_str*/
-	0,					/*tp_getattro*/
+	PyObject_GenericGetAttr,		/*tp_getattro*/
 	0,					/*tp_setattro*/
 	&mmap_as_buffer,			/*tp_as_buffer*/
 	Py_TPFLAGS_HAVE_GETCHARBUFFER,		/*tp_flags*/
-	0,					/*tp_doc*/
+	mmap_doc,				/*tp_doc*/
+	0,					/* tp_traverse */
+	0,					/* tp_clear */
+	0,					/* tp_richcompare */
+	0,					/* tp_weaklistoffset */
+	0,					/* tp_iter */
+	0,					/* tp_iternext */
+	mmap_object_methods,			/* tp_methods */
+
 };
 
 
@@ -1341,7 +1367,7 @@
 /* List of functions exported by this module */
 static struct PyMethodDef mmap_functions[] = {
 	{"mmap",	(PyCFunction) new_mmap_object,
-	 METH_VARARGS|METH_KEYWORDS},
+	 METH_VARARGS|METH_KEYWORDS, mmap_doc},
 	{NULL,		NULL}	     /* Sentinel */
 };
 
