isinstance的本质
isinstance() 函数是Python中用来检查一个对象是否是一个类的实例的内置函数。
它接受两个参数:第一个参数是要检查的对象,第二个参数是类(或类的一个元组,表示任意一个类)。
type的本质
在Python中,type 是一个内建的元类,用于创建类。
所有的Python类(包括用户定义的类和内建的类)都是 type 的实例,因为它们都是由 type 这个元类创建的。
isinstance(1, type) 的执行逻辑
当你执行 isinstance(1, type) 这行代码时,你正在检查整数 1 是否是 type 类的一个实例。
然而,具体的对象1不是由 type 创建的,而是由int类创建的,即1 是 int 类的实例,而不是 type的实例。所以输出False;
证明案例:
# 检查 int 类是否是由 type 创建的(即 int 类是否是 type 的实例)
print(isinstance(int, type)) # 输出:True
# 检查自定义的 MyClass 类是否是由 type 创建的
class MyClass:
pass
print(isinstance(MyClass, type)) # 输出:True
print(isinstance(MyClass(), type)) # 输出:False