bpo-20285: Improve help docs for object (GH-4759)


diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index 86ccfe0..679a596 100644
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -867,7 +867,7 @@
                 thisclass = attrs[0][2]
             attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
 
-            if thisclass is builtins.object:
+            if object is not builtins.object and thisclass is builtins.object:
                 attrs = inherited
                 continue
             elif thisclass is object:
@@ -1327,7 +1327,7 @@
                 thisclass = attrs[0][2]
             attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
 
-            if thisclass is builtins.object:
+            if object is not builtins.object and thisclass is builtins.object:
                 attrs = inherited
                 continue
             elif thisclass is object:
diff --git a/Misc/NEWS.d/next/Documentation/2017-12-08-20-30-37.bpo-20285.cfnp0J.rst b/Misc/NEWS.d/next/Documentation/2017-12-08-20-30-37.bpo-20285.cfnp0J.rst
new file mode 100644
index 0000000..ebe0c3f
--- /dev/null
+++ b/Misc/NEWS.d/next/Documentation/2017-12-08-20-30-37.bpo-20285.cfnp0J.rst
@@ -0,0 +1,3 @@
+Expand object.__doc__ (docstring) to make it clearer.
+Modify pydoc.py so that help(object) lists object methods
+(for other classes, help omits methods of the object base class.)
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 49b45b8..339f728 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4750,6 +4750,11 @@
     {0}
 };
 
+PyDoc_STRVAR(object_doc,
+"object()\n--\n\n"
+"The base class of the class hierarchy.\n\n"
+"When called, it accepts no arguments and returns a new featureless\n"
+"instance that has no instance attributes and cannot be given any.\n");
 
 PyTypeObject PyBaseObject_Type = {
     PyVarObject_HEAD_INIT(&PyType_Type, 0)
@@ -4772,7 +4777,7 @@
     PyObject_GenericSetAttr,                    /* tp_setattro */
     0,                                          /* tp_as_buffer */
     Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,   /* tp_flags */
-    PyDoc_STR("object()\n--\n\nThe most base type"),  /* tp_doc */
+    object_doc,                                 /* tp_doc */
     0,                                          /* tp_traverse */
     0,                                          /* tp_clear */
     object_richcompare,                         /* tp_richcompare */