isinstance()issubclass() 的功能与用法​

​1. isinstance(obj, classinfo)

​功能​​:检查对象 obj 是否是 classinfo 类(或其子类)的实例。
​返回值​​:TrueFalse
​用法​​:

class Animal: pass
class Dog(Animal): passdog = Dog()
print(isinstance(dog, Dog))    # True(直接类)
print(isinstance(dog, Animal)) # True(父类)
print(isinstance(dog, str))   # False(无关类)

​特点​​:

  • 支持检查多个类(元组形式):
    print(isinstance(dog, (Dog, Animal, str)))  # True(匹配任一即可)
  • 适用于动态类型校验(如函数参数验证)。

​2. issubclass(cls, classinfo)

​功能​​:检查类 cls 是否是 classinfo 的子类(或自身)。
​返回值​​:TrueFalse
​用法​​:

class Animal: pass
class Dog(Animal): passprint(issubclass(Dog, Animal))  # True(子类)
print(issubclass(Dog, Dog))     # True(自身)
print(issubclass(Dog, object))  # True(所有类继承自 object)
print(issubclass(Animal, Dog))  # False

​特点​​:

  • 同样支持元组检查多类:
    print(issubclass(Dog, (Animal, str)))  # True
  • 常用于类关系设计或框架中约束继承关系。

​核心区别​

​函数​​作用对象​​检查目标​​典型场景​
isinstance()对象 (obj)是否是某类的实例运行时类型验证
issubclass()类 (cls)是否是某类的子类设计时继承关系校验

​示例场景​​:

def process_animal(animal):if not isinstance(animal, Animal):raise TypeError("必须传入 Animal 或其子类实例")# 处理逻辑...class Bird(Animal): pass
process_animal(Bird())  # 通过
process_animal("abc")   # 报错

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

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

相关文章

判断QMetaObject::invokeMethod()里的函数是否调用成功

今天,在Qt编程,碰到一个需要使用invokeMethod方式来获取函数是否执行成功的情况。     invokeMethod()即可以同步调用,也可以异步调用。若调用者、被调用者,都在同一个线程,则是同步调用;若调用者、被调用…

【linux】特殊权限

us对文件:用户执行该文件时,会以文件所有者的权限运行chmod us filename # 符号模式 chmod 4755 filename # 数字模式(4表示SetUID)典型应用:/usr/bin/passwd(允许普通用户修改自己的密码,…

OpenCV:指纹识别

目录 一、核心算法 1:SIFT 特征提取(尺度不变特征变换) 1.1 算法原理(4 步核心流程) 1.2 重点代码实现与参数解析 1.3 关键输出解读 二、核心算法 2:FLANN 特征匹配(快速最近邻搜索&#x…

快速排序:高效的分治排序算法

快速排序因其平均时间复杂度$O(n\log n)$而成为广泛应用的高效排序算法。其核心是分治法: 选择基准 (Pivot):从待排序序列中选取一个元素(如第一个元素$arr[0]$)。 分区 (Partition):将序列重新排列,所有小于基准的元素置于其前,大于或等于的置于其后。基准元素最终位于…

网络编程之UDP广播与粘包问题

一,广播简介从上述讲的例⼦中,不管是TCP协议还是UDP协议,都是”单播”, 就是”点对点”的进⾏通信,如果要对网络里面的所有主机进⾏通信,实现”点对多”的通信,我们可以使用UDP中的⼴播通信。 理论上可以像…

教育领域大模型生成题目安全研究报告

教育领域大模型生成题目安全研究报告 一、研究背景与意义 随着大语言模型(LLM)在教育领域的深度应用,自动生成题目已成为提升教学效率、实现个性化教学的关键技术手段,广泛应用于课堂练习、作业布置、考试命题等场景。然而&…

Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡

Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡好的,我们来详细梳理一下 Android 开发中 Gradle 的常用配置和调试命令。这对于每一位 Android 开发者来说都是必须掌握的核心技能。第一部分:Gradle 与 Gr…

Maven入门_简介、安装与配置

ZZHow(ZZhow1024) 参考课程: 【尚硅谷新版Maven教程】 [https://www.bilibili.com/video/BV1JN411G7gX] 一、Maven简介 02_依赖管理工具 解决 jar 包的规模问题解决 jar 包的来源问题解决 jar 包的导入问题解决 jar 包之间的依赖 03_构建工具 我们没有注意过…

Spark(1):不依赖Hadoop搭建Spark环境

不依赖Hadoop搭建Spark环境0 概述1 单机安装Spark1.1 下载Spark预编译包1.2 解压和设置1.3 配置环境变量1.4 验证安装2 Spark运行模式2.1 Local模式(本地模式)2.1.1 Spark Shell2.1.1.1 Python版的Shell2.1.1.2 Scala版的Shell2.1.2 提交独立的Spark应用…

【ThreeJs】【自带依赖】Three.js 自带依赖指南

🛠️ Three.js 辅助库生态手册 定位:覆盖 90% 开发场景的工具选型实操指南,区分「入门必备」和「进阶扩展」。 适用人群:Three.js 新手(≥ r132 版本)、需要规范开发流程的团队。 1. 控制器(Co…

Mac电脑上如何打印出字体图标

背景 我今天打开了一个之前开发的APP,看到项目中用到了字体图标,发现有个“面条”图标用错了,想着修改一下吧。然后用输入法打出”面条“,在输入法的弹窗中就一直往下找,发现并没有出现图标。 想着打出”面条图标“也没…

当AI遇上数据库:Text2Sql.Net如何让“说人话查数据“成为现实

一句话概括:还在为写复杂SQL而头疼?Text2Sql.Net让你用自然语言就能查数据库,堪称程序员的"数据库翻译官"! 🎯 引言:从"SQL地狱"到"自然语言天堂" 想象一下这样的场景&…

整体设计 之 绪 思维导图引擎 之 引 认知系统 之8 之 序 认知元架构 之4 统筹:范畴/分类/目录/条目 之2 (豆包助手 之6)

问题Q68、我们现在仅仅分析了 认知演进 的 “进”的问题,通过层次结构 和 统筹 的同构约束 给出了 不同对象及其对应的操作和约束。 --这句话 你能完全理解吗(这意味着 完整的程序细节设计)。 还没有分析的还有 “演” 以及组合词 “演进” -…

开始 ComfyUI 的 AI 绘图之旅-Qwen-Image-Edit(十二)

文章标题一、Qwen-Image-Edit1.ComfyOrg Qwen-Image-Edit 直播回放2.Qwen-Image-Edit ComfyUI 原生工作流示例2.1 工作流文件2.2 模型下载3.3 按步骤完成工作流一、Qwen-Image-Edit Qwen-Image-Edit 是 Qwen-Image 的图像编辑版本,基于20B模型进一步训练&#xff0c…

机械制造专属ERP:降本增效与数字转型的关键

转型升级压力下,ERP系统是机械企业破局的得力助手。本文深入解析ERP的核心功能、选型要点与实施价值,助您精准选型,赋能智能制造,全面提升竞争力。在数字化浪潮席卷之下,机械制造企业正面临提质、增效、降本的关键转型…

npm / yarn / pnpm 包管理器对比与最佳实践(含国内镜像源配置与缓存优化)

这篇不是“谁更快”的玄学讨论,而是把团队能落地的做法一次说清:如何选型、如何统一版本、如何把镜像与缓存配好、如何在 CI 和 Monorepo 下稳住“可重复构建”。 一、结论先说在前 单仓库 / 以稳定为先:直接用 npm(配合 npm ci) 足够,维护成本低,生态一等一,Node 16.1…

Python项目全面打包指南:从EXE到绿色软件包

📦 Python项目全面打包指南:从EXE到绿色软件包 文章目录 📦 Python项目全面打包指南:从EXE到绿色软件包 1 打包基础概念与工具选型 1.1 核心打包概念 1.2 工具对比与选型 2 项目环境准备与依赖管理 2.1 创建和管理虚拟环境 2.2 依赖管理最佳实践 2.3 依赖导出与规范文件处…

JAVA:Spring Boot 集成 FFmpeg 实现多媒体处理

1、简述 在现代 Web 应用中,音视频处理需求越来越常见,例如:视频转码、截图、音频提取、格式转换等。FFmpeg 是一个功能极其强大的开源音视频处理工具,可以帮助我们高效完成这些任务。本文将介绍如何在 Spring Boot 项目中集成 FFmpeg,并实现一些常见的应用场景。 2、为什…

推荐一款智能三防手机:IP68+天玑6300+PoC对讲+夜视

在户外探险、工业巡检及应急通信等专业领域,传统智能手机往往难以应对复杂苛刻的环境挑战。智能三防手机凭借其坚固的机身、专业的防护能力及定制化功能,成为众多行业用户的可靠工具。本文将深入解析一款集IP68防护、天玑6300处理器、PoC公网对讲及夜视等…

ego(4)---检测B样条轨迹的障碍物进入点与退出点

障碍物进出点检测的作用在经过 B 样条的控制点采样后,接下来是绕障的环节,绕障使用的是 Astar ,但在使用 Astar 之前,需要进行障碍物进出点的检测与标记。通俗点讲,这部分的作用就是为 Astar 绕障碍做前置准备。检测进…