我在Python中认为:
所有类最终都是对象的子类
所有类最终都是类型
但是检查后
isinstance(object,type)
按预期返回了True
。作为对象是类型的实例。
但是我不确定为什么isinstance(type,object)
返回True
。 (我认为这将是False
,因为类型不是对象的实例)。
特别是isinstance(type,type)
是True
,即它是它本身的一个实例。
issubclass(object,type)
也会返回False
,这是预期的,但是以上isinstance(type,object)
的结果使我怀疑我是否正确理解了这些关系。
是因为isinstance可跨子类工作但类型不能工作吗?
答案 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 }}是正确的。