python数据类型判断type与isinstance的区别实例解析


Posted in Python onOctober 31, 2017

在项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。
这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参数。

验证类型用type函数,非常好用,比如

>>type('foo') == str
True
>>type(2.3) in (int,float)
True

既然有了type()来判断类型,为什么还有isinstance()呢?

一个明显的区别是在判断子类。

type()不会认为子类是一种父类类型。

isinstance()会认为子类是一种父类类型。

千言不如一码。

class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
  
class Foo(object):
  pass
  
class Bar(Foo):
  pass
  
print type(Foo()) == Foo
print type(Bar()) == Foo
print isinstance(Bar(),Foo)
输出
True
False
True

需要注意的是,旧式类跟新式类的type()结果是不一样的。旧式类都是<type 'instance'>。

class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
class A:
  pass
class B:
  pass
class C(object):
  pass
print 'old style class',type(A())
print 'old style class',type(B())
print 'new style class',type(C())
print type(A()) == type(B())
输出
old style class <type 'instance'>
old style class <type 'instance'>
new style class <class '__main__.C'>
True

不存在说isinstance比type更好。只有哪个更适合需求。

总结

以上就是本文关于python数据类型判断type与isinstance的区别实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Python编程之黑板上排列组合,你舍得解开吗、浅谈Python由__dict__和dir()引发的一些思考等,有什么问题可以留言,大家一起交流讨论。

Python 相关文章推荐
Python实现字典的key和values的交换
Aug 04 Python
python操作字典类型的常用方法(推荐)
May 16 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
基于python的字节编译详解
Sep 20 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
Python3并发写文件与Python对比
Nov 20 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
Python 实现一个计时器
Jul 28 Python
Python 串口通信的实现
Sep 29 Python
python pip如何手动安装二进制包
Sep 30 Python
python中requests库session对象的妙用详解
Oct 30 #Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 #Python
Python数据结构与算法之列表(链表,linked list)简单实现
Oct 30 #Python
Python进程间通信之共享内存详解
Oct 30 #Python
import的本质解析
Oct 30 #Python
python中hashlib模块用法示例
Oct 30 #Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 #Python
You might like
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
[49:28]VP vs Optic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python删除空文件和空文件夹的方法
2015/07/14 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
利用Python如何实现数据驱动的接口自动化测试
2018/05/11 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
美国在线肉类和海鲜配送:Crowd Cow
2020/10/02 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
临床医学应届生求职信
2013/11/06 职场文书
小学教师听课制度
2014/02/01 职场文书
倡议书格式范文
2014/04/14 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
超市周年庆活动方案
2014/08/16 职场文书
大学生毕业个人总结
2015/02/15 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
用php如何解决大文件分片上传问题
2021/07/07 PHP