python中isInstance和type的区别

Difference between isinstance and type in python

本问题已经有最佳答案,请猛点这里访问。

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

1
2
if not isinstance(string, str):
    #dosomething

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

1
2
if type(string)!=str:
    #dosomething


首先看看这里所有的好答案。

type()只返回对象的类型。鉴于,isInstance():

如果对象参数是ClassInfo参数或其(直接、间接或虚拟)子类的实例,则返回true。

例子:

1
2
3
4
5
6
7
8
9
10
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'

印刷品:

1
2
cannot check subclasses
definitely prints