Python中对象的类型判断

Python中区分对象是列表、字典或者其它类型

在Python中,有简单的方法来确定一个变量是一个列表、 字典或别的类型吗?我得到一个对象回来,可能是任何一种类型,我需要能够区分。

Python的 type方法

要获取的对象的类型,您可以使用内置函数。作为唯一的参数传递的对象将返回该对象的类型对象:

>>> type([]) is list
True
>>> type({}) is dict
True
>>> type('') is str
True
>>> type(0) is int
True
>>> type({})
<type 'dict'="">
>>> type([])
<type 'list'="">

</type></type>

这当然也适用于自定义类型:

>>> class Test1 (object):
        pass
>>> class Test2 (Test1):
        pass
>>> a = Test1()
>>> b = Test2()
>>> type(a) is Test1
True
>>> type(b) is Test2
True

注意到, type() 将只返回当前对象的类型,但不能告诉你我的类型继承。

>>> type(b) is Test1
False

Python的isinstance方法

判断对象的继承类型,需要使用函数。这当然也适用于内置类型:

>>> isinstance(b, Test1)
True
>>> isinstance(b, Test2)
True
>>> isinstance(a, Test1)
True
>>> isinstance(a, Test2)
False
>>> isinstance([], list)
True
>>> isinstance({}, dict)
True

type和isinstance的区别

<strong>isinstance()</strong> 通常是首选的方式,以确保对象的类型,因为它也接受的派生类型。所以除非你实际上需要的类型对象 (不管出于什么原因),使用 isinstance() 是首选了。
第二个参数的 isinstance()

也接受一个元组的类型,所以它是可能要检查多个类型一次。

isinstance

然后将返回 true,如果任何这些类型的对象是:

>>> isinstance([], (tuple, list, set))
True

“Python中对象的类型判断”的一个回复

  1. 这里有另外一篇文件介绍python中类型的判断:http://codewenda.com/python%E4%B8%AD%E5%AF%B9%E8%B1%A1%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 3 = 1