Python 常用内置函数详解(一):isinstance()函数----判断对象是否是类或子类

目录

  • 一、功能
  • 二、语法和示例
  • 三、补充:issubclass()函数---判断是否是其他类的子类

一、功能

isinstance() 函数用于判断对象是否是类或者类型元组中任意类元素的实例。
在这里插入图片描述

二、语法和示例

语法结构如下:

isinstance(object, classinfo)
# ① object:实例对象
# ② classinfo:类名可以是直接或间接类名、基本类型或者由它们组成的元组
# ③ 返回值:如果对象的类型与classinfo类型相同则返回True;否则返回False

【示例1】使用isinstance()函数判断一个实例对象是否属于某个类。代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2023-10-30 23:34
# @Author  : AmoXiang
# @File    : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680class Animals(object):a = ['dog', 'cat', 'pig', 'elephant', 'fox']animal_instance = Animals()
print(isinstance(animal_instance, Animals))  # 判断是否为Animals类的实例
print(isinstance(animal_instance, tuple))  # 判断是否为元组
print(isinstance(animal_instance, (list, tuple, Animals)))  # 判断是否为列表,元组或者Animals类的实例

程序运行结果如下图所示:
在这里插入图片描述
【示例2】使用isinstance()函数判断某个对象是否属于原生类型,代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2023-10-30 23:34
# @Author  : AmoXiang
# @File    : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680numbers = [6, 7, 8, 9]
result = isinstance(numbers, list)
print(f'{numbers} isinstance of list? {result}')
result = isinstance(numbers, dict)  # 判断是否为字典
print(f'{numbers} isinstance of dict? {result}')
result = isinstance(numbers, (dict, list))  # 判断是否为字典或列表
print(f'{numbers} isinstance of dict or list? {result}')
number = 5
result = isinstance(number, list)
print(f'{number} isinstance of list? {result}')
result = isinstance(number, int)
print(f'{number} isinstance of int? {result}')

程序运行结果如下图所示:
在这里插入图片描述
【示例3】判断多个继承中实例和父类的关系。代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2023-10-30 23:34
# @Author  : AmoXiang
# @File    : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680# 示例3:
class A:passclass B(A):passclass C(B):passsome_instance = C()
if isinstance(some_instance, A):  # 判断实例是否属于Aprint(f'{some_instance} 属于A的实例')
else:print(f'{some_instance} 不属于A的实例')

程序运行结果如下图所示:
在这里插入图片描述
【示例4】将字典转化为JSON格式。判断数据是否为字典类型,如果实字典,则将字典转换为JSON格式,否则提示格式错误。代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2023-10-30 23:34
# @Author  : AmoXiang
# @File    : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680import json# 示例4:
def set_page_config(data):if isinstance(data, dict):data = json.dumps(data)  # 将字典转化为JSON格式数据return dataelse:return '类型错误'dict_data = {'app_id': '123456', 'app_name': 'Student'}
print(f'{dict_data} 数据类型是: {type(dict_data)}')
print(f'转化后的JSON格式数据是: {set_page_config(dict_data)}')
print('*' * 70)
list_data = ['123456', 'Student']
print(f'{list_data} 数据类型是: {type(list_data)}')
print(set_page_config(list_data))

程序运行结果如下图所示:
在这里插入图片描述

三、补充:issubclass()函数—判断是否是其他类的子类

issubclass() 函数用于判断类是否是另外一个类或者类型元组中任意类元素的子类。
在这里插入图片描述
class:类名,用于指定子类
classinfo:类名,用于指定父类
返回值:如果 class 是 classinfo 的子类返回 True,否则返回 False

# -*- coding: utf-8 -*-
# @Time    : 2023-10-31 0:14
# @Author  : AmoXiang
# @File    : 02-IssubclassTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680# 示例1: 判断类的继承关系
class A:passclass B(A):passif issubclass(B, A):print('B是A的子类')  # 输出结果: B是A的子类
else:print('B不是A的子类')# 示例2:判断多个继承中父类和子类的关系
class C(B):passif issubclass(C, A):print('C是A的子类')
else:print('C不是A的子类')
print(issubclass(C, A))
print(issubclass(B, (A, C)))  # 判断B是A或C的子类

程序运行结果如下图所示:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/175428.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

铭控传感数字温度变送器丨远传温度变送器在工业中的助您精准测量

秋季的森林被染成了彩色的,地上满是落叶和一些颗粒饱满的果实。一说起栗子,最令人念念不忘的当属刚出锅的糖炒栗子,栗子的外壳在糖类与高温作用下一点点发生非酶褐变,偶尔有栗子外壳破裂的声音,听着心都跟着颤了一下。…

实时数仓-Hologres介绍与架构

本文是向大家介绍Hologres是一款实时HSAP产品,隶属阿里自研大数据品牌MaxCompute,兼容 PostgreSQL 生态、支持MaxCompute数据直接查询,支持实时写入实时查询,实时离线联邦分析,低成本、高时效、快速构筑企业实时数据仓…

【项目管理】生命周期风险评估

规划阶段目标:识别系统的业务战略,以支撑系统的安全需求及安全战略 规划阶段评估重点:1、本阶段不需要识别资产和脆弱性;2、应根据被评估对象的应用对象、应用环境、业务状况、操作要求等方面识别威胁; 设计阶段目标…

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法,全称为高级加密标准(Advanced Encryption Standard)。它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特、192比特或256比特,因此可以提供不同等级的安全性…

[已解决]大数据集群CPU告警问题解决

大数据集群CPU告警问题解决 问题 6台机器的 CPU总是连续超过90% 思路 调整yarn资源 常见的是调整容器虚拟 CPU 内核 yarn.nodemanager.resource.cpu-vcores 根据集群具体的CPU核数规划 我另外调整了两个参数 最小容器虚拟 CPU 内核数量 yarn.scheduler.minimum-allocati…

QVD-2023-19300:致远M1 usertokenservice反序列化RCE漏洞复现

文章目录 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 致远M1 usertokenservice反序列化RCE漏洞(QVD-2023-19300)复现 0x01 前言 免责声明&…

如何处理不稳定的自动化测试?

abluecolor 在解决这个问题之前,请停止编写更多测试,因为这将花费你较高的测试维护成本。你需要尽快行动起来对不稳定的原因进行深入研究,找到不稳定的根因,并且尝试在流程、环境和代码方面做一些优化工作解决它。 MasterKindew…

Leetcode 542. 01 矩阵

542. 01 矩阵-中等 问题描述 给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示例 1: 输入:mat [[0,0,0],[0,1,0],[0…

利用AI Chat 将电子书自动截屏并保存成pdf文件

电子书如果要下载下来,无非就两种类型的方法,一种是从内部破解,通常是某些极客将软件破解成免费版,但是风险也大。另一种是从外部破解,就是截屏保存,然后将所有图片拼成pdf文件。 如果要将整本电子书截屏保…

【计算机网络】路由器的工作原理

文章目录 输入端口处理和基于目的地转发交换结构输出端口处理排队问题参考资料 路由器的四个组件 输入端口(input port):执行物理层功能(input port 左边方框、output port 右边方框)、数据链路层功能(input/output port 中间方框…

springboot+vue基于Hadoop短视频流量数据分析与可视化系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

Istio 实战

文章目录 Istio流量管理分享会【1】什么是istio?【2】istio 可以干什么?【3】业务中的痛点?【4】istio 高级流量管理5.1 istio 组件介绍与原理5.2 sidercar何时注入?如何控制是否注入?5.3 查看sidecar 容器插入的容器中的iptablesDestination RuleVirtual ServiceGateways…

Qt 自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等效果实现

文章目录 前言效果代码.pro文件widget.hwidget.cppwidget.uititle.htitle.cpptitle.ui 前言 本次实验内容为Qt自定义标题栏,最小化、最大化、关闭窗口,双击最大化,鼠标拖动等界面软件的基本常规操作。 我们在做一个软件界面的时候&#xff…

NEFU数字图像处理(三)图像分割

一、图像分割的基本概念 1.1专有名词 前景和背景 在图像分割中,我们通常需要将图像分为前景和背景两个部分。前景是指图像中我们感兴趣、要分割出来的部分,背景是指和前景不相关的部分。例如,对于一张人物照片,人物就是前景&…

LIMZO-A-6/210开环控制比例插装阀控制器

LICZO-A-4/100、LIMZO-A-6/210、LIRZO-A-3/350、LIMZO-A-8/315、LICZO-A-3/100、LIRZO-A-6/210、LICZO-A-2/210二通数字式比例插装阀可分别执行: 压力补偿溢流和减压开环功能。此类阀有不同的型式可供选择:A型,与分体式放大器配合使用AEB型,带基本型集成…

Mybatis—XML配置文件、动态SQL

学习完Mybatis的基本操作之后&#xff0c;继续学习Mybatis—XML配置文件、动态SQL。 目录 Mybatis的XML配置文件XML配置文件规范XML配置文件实现MybatisX的使用 Mybatis动态SQL动态SQL-if条件查询 \<if\>与\<where\>更新员工 \<set\>小结 动态SQL-\<forea…

linux的使用学习(1)

Linux 修改root密码 1.以 root 用户或具有 sudo 权限的登录到 Linux 系统。 2.打终端&#xff0c;并执行以下命令以更改 root 用户的密码&#xff1a; sudo passwd root 3.然后&#xff0c;系统会要求你输入新的 root 密码。请注意&#xff0c;在输入密码时&#xff0c;终端界…

深入了解 Elasticsearch 8.1 中的 Script 使用

一、什么是 Elasticsearch Script&#xff1f; Elasticsearch 中的 Script 是一种灵活的方式&#xff0c;允许用户在查询、聚合和更新文档时执行自定义的脚本。这些脚本可以用来动态计算字段值、修改查询行为、执行复杂的条件逻辑等等。 二、支持的脚本语言有哪些 支持多种脚本…

JavaWeb——关于servlet种mapping地址映射的一些问题

6、Servlet 6.4、Mapping问题 一个Servlet可以指定一个映射路径 <servlet-mapping><servlet-name>hello</servlet-name><url-pattern>/hello</url-pattern> </servlet-mapping>一个Servlet可以指定多个映射路径 <servlet-mapping>&…

音视频技术开发周刊 | 317

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 MIT惊人再证大语言模型是世界模型&#xff01;LLM能分清真理和谎言&#xff0c;还能被人类洗脑 MIT等学者的「世界模型」第二弹来了&#xff01;这次&#xff0c;他们证明…