Python-判断变量类型和继承链-type isinstance
在很多情况下,需要对类型进程动态判断,因为不同的数据类型不能互相做运算并且各自拥有不同的运算逻辑,所有需要判断对象的类型,常用的是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的更多相关文章
- [Python]判断变量类型是否为List列表
用法:isinstance(变量,list) li = [1,2,3] print(type(li)) if isinstance(li,list): print("This is a Li ...
- JavaScript 变量克隆和判断变量类型
一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...
- Javascript 判断变量类型的陷阱 与 正确的处理方式
Javascript 由于各种各样的原因,在判断一个变量的数据类型方面一直存在着一些问题,其中最典型的问题恐怕就是 typeof null 会返回 object 了吧.因此在这里简单的总结一下判断数据 ...
- PHP判断变量类型和类型转换的三种方式
前言: PHP 在变量定义中不需要(不支持)明确的类型定义.变量类型是根据使用该变量的上下文所决定的.所以,在面对页码跳转.数值计算等严格的格式需求时,就要对变量进行类型转换. 举例如下: $foo ...
- php判断变量类型
php判断变量类型 一.总结 一句话总结: gettype()函数:gettype(1);返回的是integer is_array():is系列函数 1.PHP empty.isset.isnull的 ...
- python 判断变量是否存在 防止报错
Python判断变量是否存在 方法一:使用try: ... except NameError: .... try: var except NameError: var_exists = False e ...
- python的变量类型(Day6)
Python的变量类型 变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. 变量赋值 Python 中的变量赋值不需要类型声明 等号(=)用来给变量赋值,等号左边为变量值,等号右边是存储在 ...
- 16. js 判断变量类型,包括ES6 新类型Symbol
相信大家在开发中遇到需要判断变量类型的问题,js变量按存储类型可分为值类型和引用类型,值类型包括Undefined.String.Number.Boolean,引用类型包括object.Array.F ...
- 【Python】Python—判断变量的基本类型
type() >>> type(123)==type(456) True >>> type(123)==int True >>> type('ab ...
随机推荐
- CentOS7(Linux)源码安装Redis
介绍 项目中经常需要用到Redis做缓存数据库,可是还有小伙伴不会在Linux上安装Redis,毕竟我们开发的项目都是要在服务器上运行的,今天就来讲讲如何在CentOS7环境使用源码进行安装Redis ...
- 《spring源码解读》 - ioc之验证模型获取
我们上一篇文章最后调用到 `org.springframework.beans.factory.xml. XmlBeanDefinitionReader#doLoadDocument(...) ` 方 ...
- Java 将Html转为PDF
本文介绍如何在Java程序中将html文件转换成PDF文件.转换时,需要注意以下两点: 一.需要使用转换插件 可根据不同的系统来下载对应的插件,下载地址:windows-x86.zip, window ...
- SecureCRT 关键字高亮显示
grep命令红色高亮关键字 1. 左边侧栏 Session Manage 右键Sessions --Properties 2 Terminal--Appearance Current color s ...
- 没想到,Git居然有3种“后悔药”!
没想到,Git居然有后悔药! 你知道Git版本控制系统中都有哪些"后悔药"吗? 本文通过案例讲解git reset . git revert . git checkout在版本控制 ...
- [U3D + GAD]Egametang开源服务器框架资源管理系统
Egametang开源服务器框架资源管理系统详解 http://m.gad.qq.com/article/detail/36409 ET GitHub https://github.com/egame ...
- Unity游戏Mono内存管理及泄漏
UWA工具 https://yq.aliyun.com/articles/435553 Unity游戏Mono内存管理及泄漏 https://wetest.qq.com/lab/view/135.ht ...
- RabbitMQ 3.8.7 在 centos7 上安装
1.安装 erlang 因为 RabbitMQ 是 erlang 语言开发,所以需要依赖 erlang 环境,所以在安装 RabbitMQ 前需要先安装 erlang wget https://pac ...
- P1164 小A点菜(动态规划背包问题)
题目背景 uim神犇拿到了uoi的ra(镭牌)后,立刻拉着基友小A到了一家--餐馆,很低端的那种. uim指着墙上的价目表(太低级了没有菜单),说:"随便点". 题目描述 不过ui ...
- 面试【JAVA基础】锁
1.锁状态 锁的状态只能升级不能降级. 无锁 没有锁对资源进行锁定,所有线程都能访问并修改同一个资源,但同时只有一个线程能修改成功.其他修改失败的线程会不断重试,直到修改成功,如CAS原理和应用是无锁 ...