isinstance和type的区别

type(obj)是查看对象是否由那个类创建的

class Bar():
    pass
class Foo(Bar):
    pass
obj=Foo()
print(type(obj))    #<class '__main__.Foo'>
if type(obj)==Foo:
    print('obj是Foo创建的')  #obj是Foo创建的
if type(obj)!=Bar:
    print('不是Foo的父类创建的')  #不是Foo的父类创建的

 

isinstance(参数1,参数2)是查看参数1是否是参数2(类或者父类创建)的实例

class Base(object):
    pass
class Foo(Base):
    pass
obj=Foo()
print(isinstance(obj,Foo))    #True
print(isinstance(obj,Base))    #True

 

由上面可以看出type更精准,instance范围更广

如果判断对象是否是指定的某一类,就用type

如果判断对象是否每一类或者其父类就用inistance

posted @ 2018-08-30 16:26  amberLIU  阅读(294)  评论(0)    收藏  举报