为什么类型检查不适用于哪种类型返回?

时间:2015-07-13 15:41:55

标签: python typechecking python-internals

我只是试着测试:

if type(model_lines) == 'str':
    turn into a list using split

基于:

In [196]: type('a')
Out[196]: str

然而,对于x,一个字符串:

In [193]: if type(x) == 'str':
    print 'string'
   .....:  

In [195]: if type(x) == type('a'):
    print 'string'
   .....:     
string

我很好奇为什么我不能使用此输出来检查类型,它看起来更清晰,更快速。类型实际返回的内容是什么,不允许通过返回显示进行检查?

2 个答案:

答案 0 :(得分:4)

因为,type()返回对象的类,而不是类的字符串名称,因此,如果你执行类似下面的操作,它将起作用 -

>>> if type('abcd') == str:
...     print("Blah")
...
Blah
>>> type('abcd')
<class 'str'>

如上所述,我检查了type('abcd')str课程的返回,而不是字符'str'

如果你想要类的字符串表示,使用tpye(<something>).__name__来获取类的字符串名称,虽然这不是你需要的,只是为了你的信息。示例 -

>>> type('abcd').__name__
'str'

答案 1 :(得分:-1)

因为http://localhost:8080/igloo也可以产生unicode实例。您可以通过查看type('a')的输出来断言。