Have pydoc try handling an object as "other" if the object does not act the way
it expects based on what inspect classifies it as.

Closes bug #729103 .
diff --git a/Lib/pydoc.py b/Lib/pydoc.py
index a6778d6..fe114fd 100755
--- a/Lib/pydoc.py
+++ b/Lib/pydoc.py
@@ -275,9 +275,16 @@
     def document(self, object, name=None, *args):
         """Generate documentation for an object."""
         args = (object, name) + args
-        if inspect.ismodule(object): return self.docmodule(*args)
-        if inspect.isclass(object): return self.docclass(*args)
-        if inspect.isroutine(object): return self.docroutine(*args)
+        # 'try' clause is to attempt to handle the possibility that inspect
+        # identifies something in a way that pydoc itself has issues handling;
+        # think 'super' and how it is a descriptor (which raises the exception
+        # by lacking a __name__ attribute) and an instance.
+        try:
+            if inspect.ismodule(object): return self.docmodule(*args)
+            if inspect.isclass(object): return self.docclass(*args)
+            if inspect.isroutine(object): return self.docroutine(*args)
+        except AttributeError:
+            pass
         return self.docother(*args)
 
     def fail(self, object, name=None, *args):