检查str的实例时是否为Type

时间:2015-07-22 03:43:19

标签: python

我试图写一个函数,如果传递一个字符串或一个数字,则数据以相反的顺序返回。否则,它会按原样返回。

这是我的代码:

def reverse_it(data):
    if isinstance(data, str):
        return data[::-1]
    elif isinstance(data, int):
        return data[::-1]
    else:
        return data

这会导致错误:

  File "play.py", line 10, in <module>
    print reverse_it(9000)
  File "play.py", line 5, in reverse_it
    return data[::-1]
TypeError: 'int' object has no attribute '__getitem__'

为什么我可以检查str对象的数据类型,而不是int?

1 个答案:

答案 0 :(得分:0)

您认为应该在这里发生什么:

elif isinstance(data, int):
    return data[::-1]

数据类型检查成功,但您无法对int进行切片。

你可以写

return str(data)[::-1]

编辑:您可能还需要

isinstance(data, basestring)

请参阅What is the difference between isinstance('aaa', basestring) and isinstance('aaa', str)?