目录

  • 一、isinstance与type
  • 二、issubclass

一、isinstance与type

在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端“参数错误”错误码。

这样做不但便于调试,而且增加健壮性。因为客户端是可以作弊的,不要轻易相信客户端传过来的参数。

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

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

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

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

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

千言不如一码。

class Foo(object):passclass Bar(Foo):passprint(type(Foo()) == Foo)
True
print(type(Bar()) == Foo)
False
# isinstance参数为对象和类
print(isinstance(Bar(),Foo))
True

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

# python2.+
class A:passclass B:passclass C(object):passprint('old style class',type(A()))  # old style class <type 'instance'>print('old style class',type(B()))  # old style class <type 'instance'>print('new style class',type(C()))  # new style class <class '__main__.C'>print(type(A()) == type(B()))  # True

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

二、issubclass

class Parent:passclass Sub(Parent):passprint(issubclass(Sub, Parent))
True
print(issubclass(Parent, object))
True

转载于:https://www.cnblogs.com/TankJam/p/11163366.html

isinstance和issubclass相关推荐

  1. python五十四:isinstance和issubclass

    class Foo:passf1 = Foo() print(isinstance(f1, Foo)) # f1是否是类Foo的实例class Bar(Foo):passprint(issubclas ...

  2. python isinstance和issubclass区别

    一.issubclass 判断两个类是否是同个类,或者有继承关系.只能判断类不能判断实例 class A:pass class B(A):pass print(issubclass(B,A)) pri ...

  3. Python面向对象:isinstance和issubclass

    一.isinstance与type 在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端"参数错误"错误码. 这样做不但便于调试,而且增加健壮性. ...

  4. 内置函数isinstance和issubclass

    1. isinstance(obj,class) 判断对象obj是不是由class生成的对象. class Foo:passobj=Foo()print(isinstance(obj,Foo)) ob ...

  5. issubclass在python中的意思_python基础之类的isinstance与issubclass、反射

    一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo: pass o ...

  6. php isinstance,Python issubclass和isinstance

    Python 提供了如下两个函数来检查类型: issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类. isinstance(ob ...

  7. Python入门学习-DAY27- isinstance与issubclass、反射、内置方法

    isinstance与issubclass issubclass:判断子类是否属于父类,是则返回True,否则返回False isinstance:判断对象是否属于类,是则返回True,否则返回Fal ...

  8. 一文读懂架构师都不知道的isinstance检查机制

    起步 通过内建方法 isinstance(object, classinfo) 可以判断一个对象是否是某个类的实例.但你是否想过关于鸭子协议的对象是如何进行判断的呢? 比如 list 类的父类是继 o ...

  9. python全栈开发基础【第十七篇】面向对象反射和内置方法

    一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...

最新文章

  1. 关于学习Python的一点学习总结(52->模块就是程序)
  2. 全面梳理关系型数据库和 NoSQL 的使用情景
  3. hystrix 配置 不生效_12、Feign整合断路器Hystrix
  4. Linux下编译opencv
  5. 计算机二级报名可以报两个地方吗,同学们注意了!!这4个地区计算机二级还可以报名!!...
  6. 深度学习-机器学习(神经网络的应用 下)
  7. 4月24日云栖精选夜读 | 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?...
  8. C++再议构造函数及复制构造函数深度复制
  9. 【面经】关于Transformer,面试官们都怎么问
  10. python高段编程_25个有用的 Python 代码段
  11. ADB常用命令及其用法大全
  12. AutoCAD2006安装破解图文教程
  13. 利用百度智能云实现车牌号识别
  14. 神经网络ANN——SPSS实现
  15. dell服务器1950安装win7系统,DELLOPTIPLEX3040安装WIN7操作系统方法图文
  16. Android 仿余额宝数字动画实现
  17. (附源码)spring boot信佳玩具有限公司仓库管理系统 毕业设计 011553
  18. matlab 流固耦合,关于Abaqus在流固耦合方面的应用研究.pdf
  19. ROS2GO+Cozmo=口袋机器人之人工智能仿真和实验平台
  20. 内网横向移动|哈希传递PTH|mimikatz使用

热门文章

  1. IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称
  2. linux内核cpu负载计算,CPU 负载 — The Linux Kernel documentation
  3. python中布尔类型是特殊的_Python中的特殊方法以及应用详解
  4. polkit 重新安装_不折腾,为U-NAS安装一个清爽的桌面,把小U打造成双面高手
  5. 深度学习pytorch--多层感知机(二)
  6. 人工智能领域论文常见基本概念笔记
  7. 【音视频安卓开发 (六)】Android GLSurfaceView播放视频
  8. matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
  9. php登陆页面修改密码的功能,使用bootstrap创建登录注册页面并实现表单验证功能...
  10. c++矩阵连乘的动态规划算法并输出_「Javascript算法设计」× 动态规划与回溯算法...