Python 基础知识点!isinstance 应用场景最全汇总

isinstance( ) 是 Python 中的一个内置函数,用于检查一个对象是否是一个指定的类或者一个子类的实例。它的基本语法是:

isinstance(object, classinfo)

其中 object 是要检查的对象,而 classinfo 可以是类、类型、或者由类或类型组成的元组。

isinstance( ) 的主要作用包括:

  • 类型检查:确定对象是否是某个类的实例。
  • 多态性支持:在面向对象编程中,isinstance( ) 可以用来实现多态性,允许对不同类型的对象使用相同的接口。
  • 继承检查:isinstance( ) 也会检查对象是否是给定类的子类的实例。

以下是一些 isinstance() 的常见应用场景:

(1)类型检查

if isinstance(obj, int):
    print("obj is an integer")
elif isinstance(obj, str):
    print("obj is a string")

(2)处理多态

在设计接口或函数时,可以接受多种类型的参数,然后根据参数的实际类型执行不同的操作。

def process_data(data):
    if isinstance(data, list):
        # 处理列表类型的数据
        pass
    elif isinstance(data, dict):
        # 处理字典类型的数据
        pass

(3)序列和映射的区分

在处理序列(如列表、元组)和映射(如字典)时,可以使用 isinstance() 来区分它们。

if isinstance(data, (list, tuple)):
    # data 是序列类型
    pass
elif isinstance(data, dict):
    # data 是映射类型
    pass

(4)自定义类的继承检查

当你需要检查一个对象是否是某个类或其子类的实例时,isinstance( ) 非常有用。

class Animal:
    pass

class Dog(Animal):
    pass

dog = Dog()
print(isinstance(dog, Animal))  # 输出 True

(5)类型提示

在编写代码时,虽然 isinstance( ) 不是类型提示的一部分,但它可以用来在运行时验证类型提示。

from typing import List

def sum_numbers(numbers: List[int]) -> int:
    if not all(isinstance(n, int) for n in numbers):
        raise ValueError("All items must be integers")
    return sum(numbers)

使用 isinstance( ) 而不是直接比较类型(如 type(obj) == int)通常更灵活,因为它考虑了继承,这使得代码更加通用和可重用。


如果你喜欢本文,欢迎点赞,并且关注我们的微信公众号:Python技术极客,我们会持续更新分享 Python 开发编程、数据分析、数据挖掘、AI 人工智能、网络爬虫等技术文章!让大家在Python 技术领域持续精进提升,成为更好的自己!

添加作者微信(coder_0101),拉你进入行业技术交流群,进行技术交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_风逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值