我在REPL中玩耍,发现关于内置object
基类的行为使我感到困惑:
>>> object
<class 'object'>
>>> type(object)
<class 'type'>
在这种情况下,为什么object
的类型不是<class 'object'>
?这是怎么回事?
答案 0 :(得分:6)
类始终是type
实例的直接,直接(隐含在所有没有声明的元类的所有类中)或间接(通过元类,它们始终是type
的子类)。 object
本身是一个类,您没有创建它的实例,因此它不能报告自己是object
的实例(无论如何都不直接; isinstance(object, object)
确实返回{ {1}},因为如果您沿着继承链走得足够远的话,包括True
本身在内的所有事物都是type
的实例。
如果您创建了object
的实例,例如object
,它将报告您的期望。