如何比较Python中的对象的类型?
基本上我想这样做:
obj = 'str'
type ( obj ) == string
我试过了:
type ( obj ) == type ( string )
并没有奏效。
另外,其他类型呢? 例如,我无法复制NoneType
。
isinstance()
在你的情况下, isinstance("this is a string", str)
将返回True
。
您可能还想阅读:http://www.canonical.org/~kragen/isinstance/
isinstance
作品:
if isinstance(obj, MyClass): do_foo(obj)
但请记住:如果它看起来像一只鸭子,并且它听起来像一只鸭子,那它就是一只鸭子。
编辑:对于None类型,你可以简单地做:
if obj is None: obj = MyClass()
首先,避免所有类型的比较。 他们非常非常少需要。 有时,它们有助于检查函数中的参数类型 - 即使这很少见。 错误的类型数据会引发异常,这就是您所需要的。
所有基本的转换函数将映射为与类型函数相同。
type(9) is int
type(2.5) is float
type('x') is str
type(u'x') is unicode
type(2+3j) is complex
还有其他一些情况。
isinstance( 'x', basestring )
isinstance( u'u', basestring )
isinstance( 9, int )
isinstance( 2.5, float )
isinstance( (2+3j), complex )
没有,BTW,从来不需要任何这种类型的检查。 None是NoneType的唯一实例。 None对象是一个Singleton。 只需检查无
variable is None
顺便说一句,一般不要使用上述内容。 使用普通的异常和Python自己的自然多态。
链接地址: http://www.djcxy.com/p/54229.html上一篇: How to compare type of an object in Python?
下一篇: python: how to identify if a variable is an array or a scalar