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 ...
随机推荐
- Welcome To CUG_YZL's cnblogs
Welcome To CUG_YZL's cnblogs My name is YZL, studied in China University of Geosciences Wuhan now.W ...
- android studio配置so和assets目录
so配置: 1. 建立src/main/libs/armeabi目录,so文件放入armeabi目录 2.配置build.gradle android { defaultConfig{ XXXXXX ...
- Lua C API 书籍
https://www.oreilly.com/library/view/creating-solid-apis/9781491986301/ https://www.lua.org/notes/lt ...
- Android Studio从Eclipse导项目
要是你只下了Android Studio 就不能用Eclipse导出gradle项目了 可以直接使用Android Studio导入模块,在Android Studio里Project算Eclipse ...
- 【小白学PyTorch】7 最新版本torchvision.transforms常用API翻译与讲解
文章来自:微信公众号[机器学习炼丹术].欢迎关注支持原创 也欢迎添加作者微信:cyx645016617. 参考目录: 目录 1 基本函数 1.1 Compose 1.2 RandomChoice 1. ...
- Mybatis源码学习第六天(核心流程分析)之Executor分析
今Executor这个类,Mybatis虽然表面是SqlSession做的增删改查,其实底层统一调用的是Executor这个接口 在这里贴一下Mybatis查询体系结构图 Executor组件分析 E ...
- 斗篷指令、属性指令、表单指令、条件指令、循环指令、js的Array操作、前台数据库、
```python"""1)指令 属性指令:v-bind 表达指令:v-model 条件指令:v-show v-if 循环指令:v-for 斗篷指令:v-cloak 2) ...
- 详解 Python 的二元算术运算,为什么说减法只是语法糖?
原题 | Unravelling binary arithmetic operations in Python 作者 | Brett Cannon 译者 | 豌豆花下猫("Python猫&q ...
- 关于取表中id最大值+1的select语句,哪种效率更高?
需求:取stock表中id最大值+1,作为下一个id值. 特殊情况:考虑到表中会没有值,max(id)会返回空,因此需要用case when进行判断. 实现一:select (case max(id) ...
- 20190925-04Redis五大数据类型之Key 000 025