This is one of the edge cases in Python:
- Everything in Python is an object, so since objectis the base type of everything,type(being something in Python) is an instance ofobject.
- Since objectis the base type of everything,objectis also a type, which makesobjectan instance oftype.
Note that this relationship is nothing you can replicate with your own things in Python. It’s a single exception that is built into the language.
On the implementation side, the two names are represented by PyBaseObject_Type (for object) and PyType_Type (for type).
When you use isinstance, the type check—in the very last step, after everything else has failed—is done by type_is_subtype_base_chain:
type_is_subtype_base_chain(PyTypeObject *a, PyTypeObject *b)
{
    do {
        if (a == b)
            return 1;
        a = a->tp_base;
    } while (a != NULL);
    return (b == &PyBaseObject_Type);
}
This essentially keeps going up the type hierarchy of a and checks the resulting type against b. If it cannot find one, then the last resort is to check whether b is actually object in which case the function returns true: since everything is an object. So the “everything is an instance of object” part is actually hardcoded into the instance check.
And as for why object is a type, this is actually even simpler because it’s simply defined that way in the declaration of PyBaseObject_Type:
PyTypeObject PyBaseObject_Type = {
    PyVarObject_HEAD_INIT(&PyType_Type, 0)
    "object",                                   /* tp_name */
    sizeof(PyObject),                           /* tp_basicsize */
    …
The PyVarObject_HEAD_INIT essentially sets the core type information stuff, including the base type, which is PyType_Type. 
There are actually two more consequences of this relationship:
- Since everything is an object, objectis also an instance ofobject:isinstance(object, object)
- Since PyType_Typeis also implemented with the samePyVarObject_HEAD_INIT,typeis also a type:isinstance(type, type).