python中isinstance和type之间的区别

时间:2015-05-15 00:32:37

标签: python python-3.x types

我正在网上看一些代码,我看到了一些我不习惯的代码。最让我注意的是:

if not isinstance(string, str):
    #dosomething

如果我这样做会有什么不同:

if type(string)!=str:
    #dosomething

1 个答案:

答案 0 :(得分:3)

首先查看所有出色的答案here

type()只返回一个对象的类型。鉴于,isinstance()

如果object参数是classinfo参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true。

示例:

class MyString(str):
    pass

my_str = MyString()
if type(my_str) == 'str':
    print 'I hope this prints'
else:
    print 'cannot check subclasses'
if isinstance(my_str, str):
    print 'definitely prints'

打印:

cannot check subclasses
definitely prints