首页 > 编程语言 >Python | isinstance函数的使用

Python | isinstance函数的使用

时间:2023-04-21 10:35:28浏览次数:38  
标签:函数 Python Dog dog Animal Cat isinstance True

isinstance 是一个 Python 内置函数,用于检查一个对象是否是指定类或其子类的实例。isinstance(obj, cls) 返回一个布尔值,表示 obj 是否是 cls 或其子类的实例。类似 type()。

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

语法

isinstance 的语法如下:

isinstance(obj, cls)

其中,obj 是要检查的对象,cls 是要检查的类或类型。如果 objcls 或其子类的实例,则返回 True,否则返回 False

示例用法

示例一:

class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

dog = Dog()
cat = Cat()

print(isinstance(dog, Dog))    # True
print(isinstance(dog, Animal)) # True
print(isinstance(dog, Cat))    # False

print(isinstance(cat, Cat))    # True
print(isinstance(cat, Animal)) # True
print(isinstance(cat, Dog))    # False

在上面的例子中,我们定义了一个 Animal 类和两个子类 DogCat。然后我们创建了一个 Dog 和一个 Cat 的实例,并使用 isinstance 函数来检查它们的类型。例如,isinstance(dog, Dog) 返回 True,因为 dogDog 类的一个实例。isinstance(dog, Animal) 也返回 True,因为 dogAnimal 类和 Dog 类的子类之一。而 isinstance(dog, Cat) 返回 False,因为 dog 不是 Cat 类的实例。

示例二:

>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True

type() 与 isinstance()区别:

class A:
    pass
 
class B(A):
    pass
 
isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False

总结

isinstance 函数可以用于很多场合,例如:

  • 检查一个对象的类型,根据不同类型执行不同的操作。
  • 在继承关系中检查对象的类型,判断是否需要调用父类的方法。
  • 在编写类型检查代码时,确保代码能够处理不同类型的对象。

需要注意的是,isinstance 函数只检查一个对象的类型,而不考虑对象的值。如果想比较两个对象的值是否相等,可以使用 == 操作符或其他比较运算符。

标签:函数,Python,Dog,dog,Animal,Cat,isinstance,True
From: https://www.cnblogs.com/zhangxuegold/p/17339440.html

相关文章

  • uiautomator2+python-模拟安卓键盘输入
    这种方法通常用于不知道控件的情况下的输入。第一步需要切换输入法,然后发送adb广播命令,具体使用方法如下d.set_fastinput_ime(True)先清除掉文本框的内容d.press("back")为收起键盘,可能存在键盘阻挡住别的页面元素,需要收起键盘d=u2.connect()d.set_fastinput_ime(Tr......
  • 一篇文章带你搞懂Python中的继承和多态
    今日鸡汤岩溜喷空晴似雨,林萝碍日夏多寒。一、继承的介绍继承是一种创建新的类的方式,新创建的叫子类,继承的叫父类、超类、基类。继承的特点就是子类可以使用父类的属性(特征、技能)。继承是类与类之间的关系。继承可以减少代码冗余、提高重用性。在现实生活中,继承一般指的是子女继承父......
  • 手把手教你用Python操纵Word自动编写离职报告
    今日鸡汤不堪玄鬓影,来对白头吟。前言大家好,我是吴老板,今天给大家分享一篇Python自动化文章。Python是自动化处理的一把好手,比如自动编写离职申请!!!安装pipinstallpython-docx-ihttps://pypi.douban.com/simple/基本用法创建一个docx文档fromdocximportDocumentfromdocx.enu......
  • [oeasy]python0135_命名惯用法_name_convention
    命名惯用法回忆上次内容上次了解了isidentifier的细节关于关键字关于下划线如何查询变量所指向的地址?id如何查询已有的各种变量?locals如果用一个变量a的值给另一个变量b赋值是什么样的过程呢??......
  • Sublime Text编辑器配置Python解释器简易教程
    今日鸡汤路漫漫其修远兮,吾将上下而求索。 前天在微信上遇到一个小伙伴问我一个关于Sublimetext配置Python解释器的问题,可能是初学者,对这方面还不是很懂,想使用快捷键但是徒劳一场,因为缺少Python解释器,直接按下快捷键Ctrl+B是不会得到想要的结果的。鉴于此,如果有小伙伴想使用Sub......
  • [oeasy]python0135_命名惯用法_name_convention
    命名惯用法回忆上次内容上次了解了isidentifier的细节关于关键字关于下划线 如何查询变量所指向的地址?id 如何查询已有的各种变量?locals 如果用一个变量a的值给另一个变量b赋值是什么样的过程呢??......
  • Ubuntu20.04 python3.8.10升级到python3.9
    为了部署opencv-python,安装了ubuntu20.04的虚拟机,很容易的安装了numpy、matplotlib、opencv模块。但python是3.8.10版本,网上学习视频的版本为3.9,所以也进行了升级。参考https://blog.csdn.net/wuxianbing2012/article/details/123532589,完成了本次升级。以下是参考博文的内容:......
  • Python openpyxl 的用法
    这里只教最实用的一种方法importopenpyxlwb=openpyxl.Workbook()#创建表格对象sheet=wb.worksheets[0]#获取当前表格(wb在创建时会自动创建一个sheet表格)sheet.cell(row=1,column=2,value="456")wb.save('test.xlsx')需要注意的是:sheet.cell函数的参数row,......
  • 7.数组动态创建和函数
    动态创建函数动态函数一维数组动态赋值int*data=newint[3];//动态分配地址for(inti=0;i<3;i++){data[i]=1;cout<<data[i]<<"";}delete[]data;//释放分配的·地址 二维数组动态分配地址int**d......
  • Python装饰器
    装饰器的作用——不想修改函数的调用方式,但是还想在原来的函数前后添加功能原则:开放封闭原则开放:对扩展是开放的封闭:对修改是封闭的装饰器的本质:闭包函数 装饰器用法 装饰不带参数的函数importtimedeftimmer(func):definner():sta......