php isinstance,Python issubclass和isinstance
Python 提供了如下两个函数来检查类型:
issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。
isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。
通过使用上面两个函数,程序可以方便地先执行检查,然后才调用方法,这样可以保证程序不会出现意外情况。
如下程序示范了通过这两个函数来检查类型:
# 定义一个字符串
hello = "Hello";
# "Hello"是str类的实例,输出True
print('"Hello"是否是str类的实例: ', isinstance(hello, str))
# "Hello"是object类的子类的实例,输出True
print('"Hello"是否是object类的实例: ', isinstance(hello, object))
# str是object类的子类,输出True
print('str是否是object类的子类: ', issubclass(str, object))
# "Hello"不是tuple类及其子类的实例,输出False
print('"Hello"是否是tuple类的实例: ', isinstance(hello, tuple))
# str不是tuple类的子类,输出False
print('str是否是tuple类的子类: ', issubclass(str, tuple))
# 定义一个列表
my_list = [2, 4]
# [2, 4]是list类的实例,输出True
print('[2, 4]是否是list类的实例: ', isinstance(my_list, list))
# [2, 4]是object类的子类的实例,输出True
print('[2, 4]是否是object类及其子类的实例: ', isinstance(my_list, object))
# list是object类的子类,输出True
print('list是否是object类的子类: ', issubclass(list, object))
# [2, 4]不是tuple类及其子类的实例,输出False
print('[2, 4]是否是tuple类及其子类的实例: ', isinstance([2, 4], tuple))
# list不是tuple类的子类,输出False
print('list是否是tuple类的子类: ', issubclass(list, tuple))
通过上面程序可以看出,issubclass() 和 isinstance() 两个函数的用法差不多,区别只是 issubclass() 的第一个参数是类名,而 isinstance() 的第一个参数是变量,这也与两个函数的意义对应:issubclass 用于判断是否为子类,而 isinstance() 用于判断是否为该类或子类的实例。
issubclass() 和 isinstance() 两个函数的第二个参数都可使用元组。例如如下代码:
data = (20, 'fkit')
print('data是否为列表或元组: ', isinstance(data, (list, tuple))) # True
# str不是list或者tuple的子类,输出False
print('str是否为list或tuple的子类: ', issubclass(str, (list, tuple)))
# str是list或tuple或object的子类,输出True
print('str是否为list或tuple或object的子类 ', issubclass(str, (list, tuple, object)))
此外,Python 为所有类都提供了一个 __bases__ 属性,通过该属性可以查看该类的所有直接父类,该属性返回所有直接父类组成的元组。例如如下代码:
class A:
pass
class B:
pass
class C(A, B):
pass
print('类A的所有父类:', A.__bases__)
print('类B的所有父类:', B.__bases__)
print('类C的所有父类:', C.__bases__)
运行上面程序,可以看到如下运行结果:
类A的所有父类: (,)
类B的所有父类: (,)
类C的所有父类: (, )
从上面的运行结果可以看出,如果在定义类时没有显式指定它的父类,则这些类默认的父类是 object 类。
Python 还为所有类都提供了一个 __subclasses__() 方法,通过该方法可以查看该类的所有直接子类,该方法返回该类的所有子类组成的列表。例如在上面程序中增加如下两行:
print('类A的所有子类:', A.__subclasses__())
print('类B的所有子类:', B.__subclasses__())
运行上面代码,可以看到如下输出结果:
类A的所有子类: []
类B的所有子类: []
php isinstance,Python issubclass和isinstance相关推荐
- python issubclass 和 isinstance函数
Python issubclass() 函数 issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类. 语法: issubclass(class, clas ...
- [转载] issubclass在python中的意思_python issubclass 和 isinstance函数
参考链接: Python issubclass() Python issubclass() 函数 issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类. ...
- python isinstance和issubclass区别
一.issubclass 判断两个类是否是同个类,或者有继承关系.只能判断类不能判断实例 class A:pass class B(A):pass print(issubclass(B,A)) pri ...
- Python面向对象知识点详解(含__init__、__add__、__str__、issubclass()、isinstance()等方法的使用)
Python面向对象 创建类 类属性与方法 `__init__()` 类的构造函数(初始化方法) 类的继承 方法重写 基础重载方法 `__str__( self )`的使用 运算符重载 `__add_ ...
- python学习高级篇(part4)--内置函数issubclass和isinstance
学习笔记,仅供参考,有错必纠 文章目录 issubclass()函数 举个例子 isinstance()函数 举个例子 issubclass()函数 内置函数issubclass()用于判断类对象与类 ...
- python中内建函数isinstance的用法
2019独角兽企业重金招聘Python工程师标准>>> 语法: isinstance(object,type) 作用: 来判断一个对象是否是一个已知的类型. 其第一个参数(objec ...
- issubclass和isinstance 反射 内置方法(魔术方法)
目录 issubclass 和 isinstance issubclass isinstance 反射 通过用户输入的key,value往对象中赋值 动态的往对象中放方法 动态的删除属性 动态删除对象 ...
- python isinstance_Python之isinstance | 学步园
isinstance isinstance(object, classinfo) 判断实例是否是这个类或者object是变量 classinfo 是类型(tuple,dict,int,float) 判 ...
- python中isinstance用法_python 之isinstance用法
isinstance() 函数来判断一个对象是否是一个已知的类型类似 type(). isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系. i ...
最新文章
- 了解下RDF 容器元素
- “是男人就下一百层”h5游戏全网最详细教学、全代码,js操作
- Comp-Agg (A Compare-Aggregate Model for Matching Text Sequences)
- 微信小程序实践_3点击版面图片获取新闻链接
- jdk8运行jdk7的代码_即使在jdk中也有错误的代码
- 输入参数的数目不足 matlab_哈工大被禁用MATLAB,工科学生慌了,论文至上间接导致软件依赖?...
- java jnotify_Jnotify文件监控的用法以及Jar文件导入的方法
- 服务器里怎么更改网站图片大小,php实现在服务器端调整图片大小的方法
- 转载: CentOS下配置Apache
- [笔记].Nios II 软核性能基准
- Stream,byte[],LZMA
- css中的相对定位、绝对定位、固定定位
- centos7 设置代理
- Python实用案例,Python脚本实现快速卡通化人物头像,让我想起了QQ秀时光!
- 硬件科普系列之硬盘——前言与准备知识篇
- MongoDB_实战部分(二)
- 世界各国领土面积排行(第二个版本)
- 一键卸载cad,强力卸载cad,强力删除autodesk,完美卸载max,彻底卸载revit,彻底删除autodesk的任何软件
- python画哆啦A梦和大雄
- Anaconda卸载
热门文章
- Observe rainy world
- MySQL 获取首次登录日期、登录设备号
- vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)...
- vue 自定义指令(directive)实例
- 配置 BeautifulSoup
- 政务大数据的东莞实践 智慧政府建设步伐加快
- SQL基础之 基本属性和运算 (一)
- 用Python写脚本:通过ssh在Windows下批量管理Linux
- js 获取当前gmt时间_javascript-如何将日期转换为GMT?
- thread.sleep是让哪个线程休眠_java多线程必看:java线程的生命周期