isinstance()用来判断一个对象是否是一个已知的类型,isinstance()函数的语法如下:
isinstance(object,classtype)
- object -- 实例对象。
- classtype -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
isinstance()函数的返回值是布尔型,若object的类型是classtype,那么就返回True,否则返回False。
示例代码1:
a = 'hello'
print(isinstance(a,str))
打印结果:
True
示例代码2:
b =[ 'hello bruce']
if isintance(b,str):
print('我是bruce')
elif isinstance(b,list):
print('我不是bruce')
else:
print('我啥都不是!')
打印结果:
我不是bruce
示例代码3:
以元组形式:
a = 'str'
b = {'name':'bruce'}
ret1 = isinstance(a,(str,list,int))
print(ret1)
ret2 = isinstance(b,(str,list,int))
print(ret2)
打印结果:
True
False
示例代码4:
class A(object):
pass
class B(A):
pass
a = A()
ret1 = isinstance(a,A)
print(ret1) # True
print(type(a) == A) # True
b = B()
ret2 = isinstance(b,A)
print(ret2) # True
print(type(b) == A) # False
综上,注意:
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。