在很多情况下,需要对类型进程动态判断,因为不同的数据类型不能互相做运算并且各自拥有不同的运算逻辑,所有需要判断对象的类型,常用的是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 = language class 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_number if __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))

  

  

Python-判断变量类型和继承链-type isinstance的更多相关文章

  1. [Python]判断变量类型是否为List列表

    用法:isinstance(变量,list) li = [1,2,3] print(type(li)) if isinstance(li,list): print("This is a Li ...

  2. JavaScript 变量克隆和判断变量类型

    一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...

  3. Javascript 判断变量类型的陷阱 与 正确的处理方式

    Javascript 由于各种各样的原因,在判断一个变量的数据类型方面一直存在着一些问题,其中最典型的问题恐怕就是 typeof null 会返回 object 了吧.因此在这里简单的总结一下判断数据 ...

  4. PHP判断变量类型和类型转换的三种方式

    前言: PHP 在变量定义中不需要(不支持)明确的类型定义.变量类型是根据使用该变量的上下文所决定的.所以,在面对页码跳转.数值计算等严格的格式需求时,就要对变量进行类型转换. 举例如下: $foo ...

  5. php判断变量类型

    php判断变量类型 一.总结 一句话总结: gettype()函数:gettype(1);返回的是integer is_array():is系列函数 1.PHP empty.isset.isnull的 ...

  6. python 判断变量是否存在 防止报错

    Python判断变量是否存在 方法一:使用try: ... except NameError: .... try: var except NameError: var_exists = False e ...

  7. python的变量类型(Day6)

    Python的变量类型 变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. 变量赋值 Python 中的变量赋值不需要类型声明 等号(=)用来给变量赋值,等号左边为变量值,等号右边是存储在 ...

  8. 16. js 判断变量类型,包括ES6 新类型Symbol

    相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined.String.Number.Boolean,引用类型包括object.Array.F ...

  9. 【Python】Python—判断变量的基本类型

    type() >>> type(123)==type(456) True >>> type(123)==int True >>> type('ab ...

随机推荐

  1. SpringCloud Alibaba Nacos 服务治理中心

    目录 一.什么是Nacos? 二.Nacos能干吗? 三.Nacos关键特性 四.Nacos中的基本概念 五.如何安装部署Nacos? 六.Nacos数据持久化 一.什么是Nacos? 英文全称Dyn ...

  2. frozenset冻结集合函数

    1.描述 frozenset()返回一个冻结的集合,冻结后不能添加.删除和修改. set()无序且不重复,是可以变的,有add.remove.扩展:删除重复数据,还可以计算交集.差集.并集等 2.函数 ...

  3. php验证当前是设备是电脑端还是手机端

    <?php // 验证设备为PC还是WAP $agent = $_SERVER['HTTP_USER_AGENT']; if(strpos($agent,"comFront" ...

  4. 设计模式(多个if的处理)

    使用场景 如果在代码中出现大量if判断,再执行一些比较复杂的业务操作,类似于以下情况. @Test void test() { String str = "A"; if (str. ...

  5. HDU - 1272-小希的迷宫(连通图+环的判断)

    上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了 ...

  6. 面试【JAVA基础】Web与网络

    1.转发与重定向的区别 转发是服务器请求资源,服务器直接访问目标地址url,把响应内容返回给浏览器. 重定向根据服务器返回的状态码重新请求地址. 转发是服务器行为,重定向是客户端行为. 转发显示的ur ...

  7. [易霖博YCTF]Web WriteUp

    中午队里师傅发到群里的比赛,借来队里师傅账号和队里其他师傅一起做了一下,ak了web,师傅们tql.学到挺多东西,总结一下. rce_nopar 进入题目给出源码: <?php if(isset ...

  8. [HGAME] Week1 Web WriteUp

    一 .Cosmos的博客 打开题目之后,首页直接给了我们提示: 版本管理工具常用的有git和svn两种,这里提示了GitHub,考虑Git信息泄露,先访问/.git/目录考虑用Githack获取泄露信 ...

  9. IDEA左侧文件目录不见了,帮你找回来!

    前几天不知道什么操作,把IDEA左侧项目的目录给弄没了,如下图,在百度上搜索了不少,就是没有效果,很是头疼,巧的是,今天琢磨了一下,又给弄回来了,所以在此记录一下,以后再给弄没了,就知道了,同时也算是 ...

  10. python连接websocket wss

    def websocket_wss(): try: wss = create_connection(wss_url, timeout=10) if wss.status == 101: wss.sen ...