__bases__ is documented, but __base__ is not. $ grep -r __base__ Doc $ grep -r __bases__ Doc Doc/c-api/object.rst:are different objects, *B*'s :attr:`~class.__bases__` attribute is searched in Doc/c-api/object.rst:a depth-first fashion for *A* --- the presence of the :attr:`~class.__bases__` Doc/extending/newtypes.rst: in its :attr:`~class.__bases__`, or else it will not be able to call your type's Doc/library/email.headerregistry.rst: class's ``__bases__`` list. Doc/library/functions.rst: tuple itemizes the base classes and becomes the :attr:`~class.__bases__` Doc/library/stdtypes.rst:.. attribute:: class.__bases__ Doc/reference/datamodel.rst: single: __bases__ (class attribute) Doc/reference/datamodel.rst: dictionary containing the class's namespace; :attr:`~class.__bases__` is a Doc/whatsnew/2.3.rst: removed: you can now assign to the :attr:`__name__` and :attr:`__bases__` Doc/whatsnew/2.3.rst: assigned to :attr:`__bases__` along the lines of those relating to assigning to
Raymond is correct. __base__ is closely tied to the C implementation. I think it might be worth a mention, but with an explicit note that it is CPython-specific. It is sometimes useful, e.g. when wondering why a certain case of multiple inheritance is rejected.
I have documented the function in object.rst file. I do not know the use of the function and have not mentioned that. My documentation is based on what I understood from the comments below and the explanation here: http://code.activestate.com/lists/python-list/334282/