You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复MyPy报错isinstance(obj, Callable)与_ClassInfo不兼容问题

解决方案

核心原因

typing.Callable是用于类型注解的特殊语法形式,并非合法的_ClassInfo类型(isinstance要求第二个参数为类、类的元组或抽象基类),这才导致mypy报错。

修复方法

  • 使用collections.abc.Callable替代typing.Callable
    collections.abc.Callable是标准库提供的抽象基类,完全符合isinstance的参数要求,同时能准确判断对象是否可调用。示例代码:

    from collections.abc import Callable
    
    def check_callable(obj):
        if isinstance(obj, Callable):
            print("对象是可调用的")
    
  • Python 3.10+ 简化方案
    从Python 3.10开始,typing.Callable已与collections.abc.Callable实现统一,直接使用typing.Callable也能通过mypy检查。但如果需要兼容Python 3.9及更早版本,优先选择collections.abc.Callable。

内容的提问来源于stack exchange,提问作者t3chb0t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:37:35