确定对象的类型?

确定对象的类型?

是否有一种简单的方法来确定变量是列表、字典还是其他什么?我得到的对象可能是两种类型,我需要能够区分。



狐的传说
浏览 516回答 3
3回答

烙印99

要获取对象的类型,可以使用内置的type()功能。将对象作为唯一参数传递将返回该对象的类型:>>>&nbsp;type([])&nbsp;is&nbsp;listTrue>>>&nbsp;type({})&nbsp;is&nbsp;dictTrue>>>&nbsp;type('')&nbsp;is&nbsp;strTrue>>>&nbsp;type(0)&nbsp;is&nbsp;intTrue>>>&nbsp;type({})<type&nbsp;'dict'>>>>&nbsp;type([])<type&nbsp;'list'>当然,这也适用于自定义类型:>>>&nbsp;class&nbsp;Test1&nbsp;(object): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass>>>&nbsp;class&nbsp;Test2&nbsp;(Test1): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass>>>&nbsp;a&nbsp;=&nbsp;Test1()>>>&nbsp;b&nbsp;=&nbsp;Test2()>>>&nbsp;type(a)&nbsp;is&nbsp;Test1True>>>&nbsp;type(b)&nbsp;is&nbsp;Test2True请注意type()将只返回对象的直接类型,但无法告诉您有关类型继承的信息。>>>&nbsp;type(b)&nbsp;is&nbsp;Test1False要解决这个问题,您应该使用isinstance功能。当然,这也适用于内置类型:>>>&nbsp;isinstance(b,&nbsp;Test1)True>>>&nbsp;isinstance(b,&nbsp;Test2)True>>>&nbsp;isinstance(a,&nbsp;Test1)True>>>&nbsp;isinstance(a,&nbsp;Test2)False>>>&nbsp;isinstance([],&nbsp;list)True>>>&nbsp;isinstance({},&nbsp;dict)Trueisinstance()通常是确保对象类型的首选方法,因为它也将接受派生类型。因此,除非您实际上需要类型对象(无论出于何种原因),否则使用isinstance()优先于type().第二参数isinstance()还可以接受类型的元组,因此可以一次检查多个类型。isinstance如果对象属于以下任何类型,则返回true:>>>&nbsp;isinstance([],&nbsp;(tuple,&nbsp;list,&nbsp;set))True

万千封印

你可以用type():>>>&nbsp;a&nbsp;=&nbsp;[]>>>&nbsp;type(a)<type&nbsp;'list'>>>>&nbsp;f&nbsp;=&nbsp;()>>>&nbsp;type(f)<type&nbsp;'tuple'>

慕后森

在对象的实例中,您还拥有:__class__属性。下面是从Python3.3控制台获取的示例>>>&nbsp;str&nbsp;=&nbsp;"str">>>&nbsp;str.__class__<class&nbsp;'str'>>>>&nbsp;i&nbsp;=&nbsp;2>>>&nbsp;i.__class__<class&nbsp;'int'>>>>&nbsp;class&nbsp;Test():...&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass...>>>&nbsp;a&nbsp;=&nbsp;Test()>>>&nbsp;a.__class__<class&nbsp;'__main__.Test'>请注意,在python 3.x和New样式类(可以从Python2.6中任意选择)中,类和类型已经合并,这有时会导致意外的结果。主要出于这个原因,我最喜欢的测试类型/类的方法是等实例内置功能。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python