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中的split()函数的使用方法
Apr 07 Python
Python出现segfault错误解决方法
Apr 16 Python
Python正则捕获操作示例
Aug 19 Python
Python中一行和多行import模块问题
Apr 01 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
Django获取该数据的上一条和下一条方法
Aug 12 Python
Python的in,is和id函数代码实例
Apr 18 Python
python实现126邮箱发送邮件
May 20 Python
Python多线程正确用法实例解析
May 30 Python
Python OpenCV去除字母后面的杂线操作
Jul 05 Python
Python中快速掌握Data Frame的常用操作
Mar 31 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
DC游戏Steam周三特惠 《蝙蝠侠》阿卡姆系列平史低
2020/04/09 欧美动漫
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
Javascript 学习书 推荐
2009/06/13 Javascript
基于javascript 闭包基础分享
2013/07/10 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
AngularJs学习第八篇 过滤器filter创建
2016/06/08 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
使用vue.js写一个tab选项卡效果
2017/03/25 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
python join方法使用详解
2019/07/30 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
python字符串格式化方式解析
2019/10/19 Python
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
求职简历自我评价范例
2014/03/12 职场文书
房屋租赁协议书
2014/04/10 职场文书
身边的榜样活动方案
2014/08/20 职场文书
安全演讲稿开场白
2014/08/25 职场文书
联谊会开场白
2015/06/01 职场文书
校园运动会广播稿
2015/08/19 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis