首页Python【Python内置函数】i...

【Python内置函数】isinstance()函数

Python 提供了许多内置函数,这些函数是Python语言的一部分,可以直接在Python程序中使用而无需导入任何模块。

本系列将会陆续整理分享一些的Python内置函数。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/11x9_wCZ3yiYOe5nVcRk2CQ?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_built-in_functions





01
简介

isinstance() 函数用于检查一个对象是否是给定类型的一个实例,或者是该类型(直接或间接,包括虚拟基类)的一个子类的实例

isinstance() 函数的基本语法如下:

isinstance(object, classinfo)
参数说明:
  • object:需要检查的对象;
  • classinfo:可以是单个类型或者包含多个类型的元组,用于检查object是否是这些类型中的一个。如果classinfo不是一个类型,也不是类型元组或包含类型元组的元组,那么会引发一个TypeError异常。

返回值:

如果objectclassinfo中的某个类型,或者是该类型的一个子类的实例,则返回True。否则返回False

02
使用

下面是一些使用 isinstance() 函数的示例:

  • 示例 1:单个类型判断

如果 classinfo 是一个单一的类型对象(比如 intstrlist 或者任何自定义类),那么 isinstance() 会检查 object 是否是这个类型的一个实例,或者是这个类型的任何子类的一个实例。

a = 10
print(isinstance(a, int))
# 输出: True
print(isinstance(a, str))
# 输出: False
class Dog:
    pass

class Cat:
    pass

my_dog = Dog()
print(isinstance(my_dog, Dog))
# 输出: True
print(isinstance(my_dog, Cat))
# 输出: False


  • 示例 2:多个类型判断

如果 classinfo 是一个包含多个类型对象的元组(或者递归地,包含其他这样的元组的元组),那么 isinstance() 会检查 object 是否是这个元组中任何一个类型的一个实例,或者是这些类型中任何一个的任何子类的一个实例。

b = [1, 2, 3]
print(isinstance(b, (list, tuple)))
# 输出: True

c = (4, 5, 6)
print(isinstance(c, (list, tuple)))
# 输出: True

d = "hello"
print(isinstance(d, (list, tuple)))
# 输出: False

在 Python 3.10 及以上版本中,可以使用联合类型(Union Type)进行类似的判断:

from typing import Union

c = [1, 2, 3]
print(isinstance(c, Union[list, tuple]))
# 输出: True


  • 示例 3:继承关系中的判断

在类的继承体系中,isinstance() 也可以正确判断。如果一个类继承了另一个类,那么子类的实例也会被认为是父类的实例。

在下面的示例中,my_super_dogSuperDog类的实例,而SuperDog继承自DogDog又继承自Animal。所以my_super_dog也是Animal类的间接实例,isinstance()返回True

class Animal:
    pass

class Dog(Animal):
    pass

class SuperDog(Dog):
    pass

my_super_dog = SuperDog()
print(isinstance(my_super_dog, Animal))
# 输出: True

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments