python中判断类型函数isinstance()示例详解

 更新时间:2024年10月06日 09:51:29   作者:春天的菠菜  
isinstance()函数是Python的内置函数,用于判断一个变量是否是某个类型或者是该类型的子类的实例,在Python中,所有类都继承自object,所以任何实例都会是object的实例,本文给大家介绍python中判断类型函数isinstance(),感兴趣的朋友一起看看吧

函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。

假设有如下的 Person、Man和 Woman的定义及继承关系如下:

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
class Man(Person):
    def __init__(self, name, gender, score):
        super(Man, self).__init__(name, gender)
        self.score = score
class Woman(Person):
    def __init__(self, name, gender, course):
        super(Woman, self).__init__(name, gender)
        self.course = course
p = Person('Tim', 'Male')
m = Man('Bob', 'Male', 88)
w = Woman('Alice', 'Female', 'English')

当我们拿到变量 p、m、w 时,可以使用 isinstance 判断类型:

>>> isinstance(p, Person)
True    # p是Person类型
>>> isinstance(p, man)
False   # p不是Man类型
>>> isinstance(p, Woman)
False   # p不是Woman类型

这说明在继承链上,一个父类的实例不能是子类类型,因为子类比父类多了一些属性和方法。

我们再考察 m :

>>> isinstance(m, Person)
True    # m是Person类型
>>> isinstance(m, Man)
True    # m是Man类型
>>> isinstance(m, Woman)
False   # m不是Woman类型

mMan类型,不是Woman类型,这很容易理解。但是,m也是Person类型,因为Man继承自Person,虽然它比Person多了一些属性和方法,但是,把 m 看成Person的实例也是可以的。

这说明在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

任务

请根据继承链的类型转换,依次思考 w是否是 Person,Man,Woman,object 类型,并使用isinstance()判断来验证您的答案。

class Person(object):
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender
class Man(Person):
    def __init__(self, name, gender, score):
        super(Man, self).__init__(name, gender)
        self.score = score
class Woman(Person):
    def __init__(self, name, gender, course):
        super(Woman, self).__init__(name, gender)
        self.course = course
w = Woman('Alice', 'Female', 'English')
print (isinstance(w,Person))
print (isinstance(w, Man))
print (isinstance(w, Woman))
print (isinstance(w, object ))
#运行结果
#True
#False
#True
#True

到此这篇关于python中判断类型函数isinstance()示例详解的文章就介绍到这了,更多相关python判断类型函数isinstance()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Python实现批量ping操作方法

    使用Python实现批量ping操作方法

    这篇文章主要介绍了使用Python实现批量ping操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • python如何利用traceback获取详细的异常信息

    python如何利用traceback获取详细的异常信息

    异常信息的获取对于程序的调试非常重要,可以有助于快速定位有错误程序语句的位置。这篇文章主要给大家介绍了关于python如何利用traceback获取详细的异常信息的相关资料,需要的朋友可以参考下
    2021-06-06
  • Python网络请求之Requests库的高级功能运用

    Python网络请求之Requests库的高级功能运用

    在这篇文章中我们将进一步深入学习Requests库的高级功能,包括处理重定向,设置超时,处理大文件以及错误和异常处理,需要的朋友可以参考下
    2023-08-08
  • Python中join()方法完全使用指南(参数要求与常见用法)

    Python中join()方法完全使用指南(参数要求与常见用法)

    join()是Python中字符串操作的核心方法之一,但许多开发者在使用时经常遇到TypeError或意外结果,本文将全面解析' '.join()的参数要求,通过实际示例展示正确用法,并总结常见问题的解决方案,需要的朋友可以参考下
    2025-06-06
  • python开发飞机大战游戏

    python开发飞机大战游戏

    这篇文章主要为大家详细介绍了python开发飞机大战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • python txt中的文件,逐行读取并且每行赋值给变量问题

    python txt中的文件,逐行读取并且每行赋值给变量问题

    这篇文章主要介绍了python txt中的文件,逐行读取并且每行赋值给变量问题,具有很好的参考价值,希望对大家有所帮助。
    2023-02-02
  • 用代码帮你了解Python基础(1)

    用代码帮你了解Python基础(1)

    这篇文章主要用代码帮你了解Python基础,使用数据类型和变量以及字符串和格式化的示例代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 如何表示python中的相对路径

    如何表示python中的相对路径

    在本篇文章里小编给大家分享的是关于python相对路径写法以及相关知识点内容,需要的朋友们可以学习下。
    2020-07-07
  • python transpose()处理高维度数组的轴变换的实现

    python transpose()处理高维度数组的轴变换的实现

    本文主要介绍了python transpose()处理高维度数组的轴变换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • python 反向输出字符串的方法

    python 反向输出字符串的方法

    今天小编就为大家分享一篇python 反向输出字符串的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07

最新评论