如何修复MyPy报错isinstance(obj, Callable)与_ClassInfo不兼容问题
解决方案
核心原因
typing.Callable是用于类型注解的特殊语法形式,并非合法的_ClassInfo类型(isinstance要求第二个参数为类、类的元组或抽象基类),这才导致mypy报错。
修复方法
使用
collections.abc.Callable替代typing.Callablecollections.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
相关产品推荐
相关产品推荐

