当前位置:主页 > python教程 > 怎么查看一个对象的类型

如何查看一个Python对象的类型

发布:2020-01-27 14:05:22 130


本站精选了一篇Python相关的编程文章,网友能博远根据主题投稿了本篇教程内容,涉及到python、怎么查看一个对象的类型相关内容,已被856网友关注,内容中涉及的知识点可以在下方直接下载获取。

怎么查看一个对象的类型

在Python中有两种类型判断函数,type()和isinstance()。

 

怎么查看一个对象的类型

使用type()

首先,我们来判断对象类型,使用type()函数:

基本类型都可以用type()判断:

>>> type(123)
<type 'int'>
>>> type('str')
<type 'str'>
>>> type(None)
<type 'NoneType'>

如果一个变量指向函数或者类,也可以用type()判断:

>>> type(abs)
<type 'builtin_function_or_method'>
>>> type(a)
<class '__main__.Animal'>

但是type()函数返回的是什么类型呢?它返回type类型。

使用isinstance()

对于class的继承关系来说,使用type()就很不方便。我们要判断class的类型,可以使用isinstance()函数。

我们回顾上次的例子,如果继承关系是:

object -> Animal -> Dog -> Husky

那么,isinstance()就可以告诉我们,一个对象是否是某种类型。先创建3种类型的对象:

>>> a = Animal()
>>> d = Dog()
>>> h = Husky()

然后,判断:

>>> isinstance(h, Husky)
True

没有问题,因为h变量指向的就是Husky对象。

再判断:

>>> isinstance(h, Dog)
True

h虽然自身是Husky类型,但由于Husky是从Dog继承下来的,所以,h也还是Dog类型。换句话说,isinstance()判断的是一个对象是否是该类型本身,或者位于该类型的父继承链上。

因此,我们可以确信,h还是Animal类型:

>>> isinstance(h, Animal)
True

同理,实际类型是Dog的d也是Animal类型:

>>> isinstance(d, Dog) and isinstance(d, Animal)
True

但是,d不是Husky类型:

>>> isinstance(d, Husky)
False

能用type()判断的基本类型也可以用isinstance()判断:

>>> isinstance('a', str)
True
>>> isinstance(u'a', unicode)
True
>>> isinstance('a', unicode)
False

并且还可以判断一个变量是否是某些类型中的一种,比如下面的代码就可以判断是否是str或者unicode:

>>> isinstance('a', (str, unicode))
True
>>> isinstance(u'a', (str, unicode))
True

由于str和unicode都是从basestring继承下来的,所以,还可以把上面的代码简化为:

>>> isinstance(u'a', basestring)
True

既然有了type()来判断类型,为什么还有isinstance()呢?一个明显的区别是在判断子类。type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。

以上就是怎么查看一个对象的类型的详细内容,更多请关注码农之家其它相关文章!


参考资料

相关文章

  • Python字符串拼接的方法总结(代码)

    发布:2022-09-07

    给大家整理一篇关于Python 字符串的教程,本篇文章给大家带来的内容是关于Python字符串拼接的方法总结(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。​


  • Python中str.format()和f-string的使用

    发布:2023-03-24

    本文主要介绍了Python中str.format()和f-string的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • python如何将图片批量保存至word文档中

    发布:2023-04-23

    这篇文章主要介绍了python如何将图片批量保存至word文档中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • 如何使用conda和pip批量安装Python包

    发布:2023-04-22

    这篇文章主要介绍了如何使用conda和pip批量安装Python包问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教


  • python中编写config文件并及时更新的方法

    发布:2023-03-23

    在pytorch或者其他深度学习框架中,有许多超参数需要调整,包括learning_rate,training_data_path等,因此编写一个config文件统一存放这些参数,方便调用/查看/修改还是很有必要,这篇文章主要介绍了python中一种编写config文件并及时更新的方法,需要的朋友可以参考下


  • 一文带你了解Python中的type,isinstance和issubclass

    发布:2023-04-29

    这篇文章主要为大家详细介绍了Python中的type、isinstance和issubclass的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下


  • 详解Python traceback用法

    发布:2020-03-05

    这篇文章主要介绍了搞清楚 Python traceback的具体使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


  • 降低python版本的操作方法

    降低python版本的操作方法

    发布:2022-07-06

    给大家整理了关于python的教程,在本篇内容里小编给大家整理的是一篇关于降低python版本的操作方法,需要的朋友们可以学习参考下。


网友讨论