Terry J. Reedy added the comment:
The problem, for me, is that in 3.3 Data Model, 'object' is being used with a 3rd meaning, 'generic class' (or possibly 'subclass of object', if indeed every 'class' must be 'object' subclass, in the strict sense of 'object'). This is in addition to 'object' the specific class and generic Python object (which in CPython is a PyObject structure instance). The normal two meanings are often differentiated by typography: normal type for plain old object, something else for *object*.
To add a bit to the confusion, 3.3.4. Customizing instance and subclass checks changes the prefix to 'class' instead of 'object' (which is what I would do in the whole section...)
class.__instancecheck__(self, instance) class.__subclasscheck__(self, subclass)
It then goes on to explain that it does not really mean 'generic class' but 'type/metaclass'. So, to me, the prefix here should really be 'metaclass'.
Peter, the patch applied fine to my copy of default. It is incomplete in that the replacement should be made everywhere or nowhere in 3.3, not just in 3.3.2(.0) and 126.96.36.199. However, do not bother making a new patch until there is more agreement on a change than there is now.
A possible alternative to the given proposal is an explanation in the short 3.3 header of the special use of 'object' within the section.
---------- versions: +Python 3.3, Python 3.4 -Python 3.2