isinstance(object, classinfo)
如果 object 实参是 classinfo 实参的实例,或者是(直接、间接或 虚拟)子类的实例,则返回 true。如果 object 不是给定类型的对象,函数始终返回 false。如果 classinfo 是对象类型(或多个递归元组)的元组,如果 object 是其中的任何一个的实例则返回 true。 如果 classinfo 既不是类型,也不是类型元组或类型的递归元组,那么会触发 TypeError 异常。
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别:
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
参数:
- object — 实例对象。
- classinfo — 可以是直接或间接类名、基本类型或者由它们组成的元组。
实例:
a = 2
print(isinstance(a, int))
print(isinstance(a, str))
# 是元组中的任意一个就返回True
print(isinstance(a, (str, int, list)))
以上代码输出结果为:
True
False
True
type() 与 isinstance()区别:
实例:
class A(object):
pass
class B(A):
pass
def main():
print(isinstance(A(), A))
print(type(A()) == A)
print(isinstance(B(), A))
print(type(B()) == A)
if __name__ == '__main__':
main()
以上代码输出结果为:
True
True
True
False