isinstance和issubclass
目录
- 一、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相关推荐
- python五十四:isinstance和issubclass
class Foo:passf1 = Foo() print(isinstance(f1, Foo)) # f1是否是类Foo的实例class Bar(Foo):passprint(issubclas ...
- python isinstance和issubclass区别
一.issubclass 判断两个类是否是同个类,或者有继承关系.只能判断类不能判断实例 class A:pass class B(A):pass print(issubclass(B,A)) pri ...
- Python面向对象:isinstance和issubclass
一.isinstance与type 在游戏项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端"参数错误"错误码. 这样做不但便于调试,而且增加健壮性. ...
- 内置函数isinstance和issubclass
1. isinstance(obj,class) 判断对象obj是不是由class生成的对象. class Foo:passobj=Foo()print(isinstance(obj,Foo)) ob ...
- issubclass在python中的意思_python基础之类的isinstance与issubclass、反射
一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo: pass o ...
- php isinstance,Python issubclass和isinstance
Python 提供了如下两个函数来检查类型: issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类. isinstance(ob ...
- Python入门学习-DAY27- isinstance与issubclass、反射、内置方法
isinstance与issubclass issubclass:判断子类是否属于父类,是则返回True,否则返回False isinstance:判断对象是否属于类,是则返回True,否则返回Fal ...
- 一文读懂架构师都不知道的isinstance检查机制
起步 通过内建方法 isinstance(object, classinfo) 可以判断一个对象是否是某个类的实例.但你是否想过关于鸭子协议的对象是如何进行判断的呢? 比如 list 类的父类是继 o ...
- python全栈开发基础【第十七篇】面向对象反射和内置方法
一.静态方法(staticmethod)和类方法(classmethod) 类方法:有个默认参数cls,并且可以直接用类名去调用,可以与类属性交互(也就是可以使用类属性) 静态方法:让类里的方法直接被 ...
最新文章
- 关于学习Python的一点学习总结(52->模块就是程序)
- 全面梳理关系型数据库和 NoSQL 的使用情景
- hystrix 配置 不生效_12、Feign整合断路器Hystrix
- Linux下编译opencv
- 计算机二级报名可以报两个地方吗,同学们注意了!!这4个地区计算机二级还可以报名!!...
- 深度学习-机器学习(神经网络的应用 下)
- 4月24日云栖精选夜读 | 阿里云POLARDB如何助力轻松筹打造5亿用户信赖的大病筹款平台?...
- C++再议构造函数及复制构造函数深度复制
- 【面经】关于Transformer,面试官们都怎么问
- python高段编程_25个有用的 Python 代码段
- ADB常用命令及其用法大全
- AutoCAD2006安装破解图文教程
- 利用百度智能云实现车牌号识别
- 神经网络ANN——SPSS实现
- dell服务器1950安装win7系统,DELLOPTIPLEX3040安装WIN7操作系统方法图文
- Android 仿余额宝数字动画实现
- (附源码)spring boot信佳玩具有限公司仓库管理系统 毕业设计 011553
- matlab 流固耦合,关于Abaqus在流固耦合方面的应用研究.pdf
- ROS2GO+Cozmo=口袋机器人之人工智能仿真和实验平台
- 内网横向移动|哈希传递PTH|mimikatz使用
热门文章
- IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称
- linux内核cpu负载计算,CPU 负载 — The Linux Kernel documentation
- python中布尔类型是特殊的_Python中的特殊方法以及应用详解
- polkit 重新安装_不折腾,为U-NAS安装一个清爽的桌面,把小U打造成双面高手
- 深度学习pytorch--多层感知机(二)
- 人工智能领域论文常见基本概念笔记
- 【音视频安卓开发 (六)】Android GLSurfaceView播放视频
- matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
- php登陆页面修改密码的功能,使用bootstrap创建登录注册页面并实现表单验证功能...
- c++矩阵连乘的动态规划算法并输出_「Javascript算法设计」× 动态规划与回溯算法...