为什么type(object)返回<class'type'>而不是<class'object'>?

Dod*_*dge 2 python python-3.x

我在REPL中玩耍,发现关于内置object基类的行为使我感到困惑:

>>> object
<class 'object'>
>>> type(object)
<class 'type'>
Run Code Online (Sandbox Code Playgroud)

为什么object在这种情况下不是<class 'object'>呢?这里发生了什么事?

Sha*_*ger 6

类始终是直接的(实例,隐含在没有声明的元类的所有类中)或间接的(通过始终是的子类的元类type)的实例typeobject本身是一个类,您没有创建它的实例,因此它不能报告自己是的实例object(无论如何都不直接;isinstance(object, object)确实返回True,因为包括您type自己在内的所有事物都是object您遵循继承的实例链足够远)。

如果您创建了的实例object,例如type(object()),它将报告您的期望。