instance(object,type)返回True,应该不为False?

时间:2019-05-07 09:51:30

标签: python

我在Python中认为:

  • 所有类最终都是对象的子类

  • 所有类最终都是类型

  • 的实例
  • 对象是类型
  • 的实例
  • 和type是对象的子类。

但是检查后 isinstance(object,type)按预期返回了True。作为对象是类型的实例。

但是我不确定为什么isinstance(type,object)返回True。 (我认为这将是False,因为类型不是对象的实例)。
特别是isinstance(type,type)True,即它是它本身的一个实例。

issubclass(object,type)也会返回False,这是预期的,但是以上isinstance(type,object)的结果使我怀疑我是否正确理解了这些关系。

是因为isinstance可跨子类工作但类型不能工作吗?

1 个答案:

答案 0 :(得分:3)

  

是因为isinstance可跨子类工作但类型不能工作吗?

完全正确。 type(x)为您提供 x 的实际类型,而isinstance(x, t)检查x的类型是否为t 或t的子类。因此,即使isinstance(x, t)不会,True也是type(x) == t

尤其是object是所有其他类都从其继承的基类,因此type(即type(type))也是object和{{1 }}是正确的。