Python 中 isinstance()和type()的区别

共性

ininstance()和type()都是用来判断一个对象是否是一个已知的数据类型。

区别

  • isinstance() 是用来和一个已知的数据类型进行对比的,输出的值为 bool类型。输出为Ture 表示带判断的对象的类型和对比的类型一致;False则表示两者不一致。
    而type() 的输入是一个对象实例,输出值是对象的类型。

    exp:

    -------------type()-------------
    type(1)
    >> <type 'int'>
    type('runoob')
    >> <type 'str'>
    type([2])
    >> <type 'list'>
    -------------isinstance()-------------
    isinstance(1,int)
    >> True
    isinstance('runoob',str)
    >> Ture
    isinstance([2],str)
    >> False
    
  • type() 不会认为子类是一种父类类型,不考虑继承关系。而isinstance() 会认为子类是一种父类类型,考虑继承关系。

    exp: 菜鸟教程

    class A:
        pass
    class B(A):
        pass
        
    isinstance(A(), A)    # returns True
    type(A()) == A        # returns True
    ## B()继承A(),isinstance()考虑继承,认为B()和A()是一种类型
    isinstance(B(), A)    # returns True
    ### type()不考虑继承,认为B()和A()不是一种类型
    type(B()) == A        # returns False
    
posted @ 2022-06-20 08:31  jacknie23  阅读(86)  评论(0编辑  收藏  举报