我正在网上看一些代码,我看到了一些我不习惯的代码。最让我注意的是:
if not isinstance(string, str):
#dosomething
如果我这样做会有什么不同:
if type(string)!=str:
#dosomething
答案 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