当前位置: 代码网 > it编程>前端脚本>Python > python中判断类型函数isinstance()示例详解

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

2024年10月06日 Python 我要评论
函数isinstance()可以判断一个变量的类型,既可以用在python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。假设有如下的person、man

函数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()内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com