New feature: if the object's type has a non-NULL tp_doc field, that
is returned as the object's __doc__ attribute.

(If only the list of methods would be referenced from the type...)
diff --git a/Objects/methodobject.c b/Objects/methodobject.c
index 7b47c3f..529e2a1 100644
--- a/Objects/methodobject.c
+++ b/Objects/methodobject.c
@@ -250,8 +250,15 @@
 	PyObject *self;
 	char *name;
 {
-	if (strcmp(name, "__methods__") == 0)
-		return listmethodchain(chain);
+	if (name[0] == '_' && name[1] == '_') {
+		if (strcmp(name, "__methods__") == 0)
+			return listmethodchain(chain);
+		if (strcmp(name, "__doc__") == 0) {
+			char *doc = self->ob_type->tp_doc;
+			if (doc != NULL)
+				return PyString_FromString(doc);
+		}
+	}
 	while (chain != NULL) {
 		PyMethodDef *ml = chain->methods;
 		for (; ml->ml_name != NULL; ml++) {