博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-判断变量类型和继承链-type isinstance
阅读量:5097 次
发布时间:2019-06-13

本文共 2759 字,大约阅读时间需要 9 分钟。

  在很多情况下,需要对类型进程动态判断,因为不同的数据类型不能互相做运算并且各自拥有不同的运算逻辑,所有需要判断对象的类型,常用的是type和isinstance,type更过用于获取对象是什么类型构建的,而isinstance可以判断对象是否继承某个类或对象是否是多个类型中的一个。

变量类型判断

  type      只能一次判断一种类型,核心是判断实例对象是由什么类型构建

  isinstance    可以判断一种类型也可以判断多种类型,同时还可以判断继承链

__author_ = "北门吹雪"__blog__ = "http://www.cnblogs.com/2bjiujiu/"__email__ = "422083556@qq.com"def check_type(value):    """使用isinstance判断变量单个类型"""    # 判断变量单个类型,如果是则返回其类型对应的字符    if isinstance(value, int):        return "int"    elif isinstance(value, float):        return "float"    elif isinstance(value, bool):        return "bool"    elif isinstance(value, str):        return "str"    elif isinstance(value, list):        return "list"    elif isinstance(value, tuple):        return "tuple"    elif isinstance(value, set):        return "set"    elif isinstance(value, dict):        return "dict"    # 如果都不是则返回不知道    else:        return "Unknow Type of {value}".format(value=value)def check_object(value):    """使用instance同时判断多个类型"""    # 判断变量是否是数字类型    if isinstance(value, (int, float, bool)):        return "number"    # 判断变量是否有序序列    elif isinstance(value, (str, list, tuple)):        return "Ordered sequence"    # 判断变量是否是无序序列    elif isinstance(value, (set, dict)):        return "Disordered sequence"    else:        return "Unknow Object of {value}".format(value=value)def use_type(value):    """type只能判断变量单个类型,也可以通过 or来进行折中解决"""    if type(value) == int:        return "int"    elif type(value) == float:        return "float"    else:        return "Unknow Type of {value}".format(value=value)if __name__ == '__main__':    print(check_type(10))    print(check_type("10"))    print(check_object((1, 3, 5)))    print(check_object({2, 5, 6}))    print(use_type(10))    print(use_type((1, 3)))

 

判断继承链

class Person(object):    def __init__(self, skin, language):        self.skin = skin        self.language = languageclass Student(Person):    def __init__(self,skin, language, name, sex, age, phone_number):        # 继承使用父类的析构字段        super(Student, self).__init__(skin=skin, language=language)        self.name = name        self.sex = sex        self.age = age        self.phone_number = phone_numberif __name__ == '__main__':    beimenchuixue = Student("yellow", "zh-hans", "xiaoMing", "male", 18, "15570911036")    # 判断实例xia_ming是否继承于 Persion    print(isinstance(beimenchuixue, Person))    print(beimenchuixue.skin)

 

判断实例对象由什么类型构成

class Class(object):    def __init__(self, student_names):        self.student_names = student_names    def __getitem__(self, item):        return self.student_names[item]python_class = Class(["QiNiuYun", "BeiMenChuiXue", "AliYun", "BaiDu"])print(type(python_class))print(type(int))print(type(object))print(type(type))

  

  

 

转载于:https://www.cnblogs.com/2bjiujiu/p/9062139.html

你可能感兴趣的文章
java常用的包
查看>>
PHP批量覆盖文件并执行cmd命令脚本
查看>>
Unity之fragment shader中如何获得视口空间中的坐标
查看>>
支持向量机——内核
查看>>
MFC注册热键
查看>>
万能的SQLHelper帮助类
查看>>
三种方式创建Angular的自定义服务
查看>>
如何在 Terminal 内可以“用惯用的编辑器”快速打开“目前正在做”的专案(project)呢?...
查看>>
uboot分析:uboot的启动过程分析
查看>>
tmux的简单快捷键
查看>>
springboot笔记04——读取配置文件+使用slf4j日志
查看>>
[Swift]LeetCode653. 两数之和 IV - 输入 BST | Two Sum IV - Input is a BST
查看>>
[Swift]LeetCode922.按奇偶排序数组 II | Sort Array By Parity II
查看>>
微信小程序的wxml文件和wxss文件在webstrom的支持
查看>>
SaltStack快速部署及测试
查看>>
[Angular] Architectures for Huge Angular Based Enterprise
查看>>
[Git] set-upstream
查看>>
[AngularJS] Best Practise - Minification and annotation
查看>>
[AngularJS] Lazy Loading modules with ui-router and ocLazyLoad
查看>>
关于移动端rem适配
查看>>