首页 > 编程问答 >为什么 mypy 会忽略函数中的参数错误?

为什么 mypy 会忽略函数中的参数错误?

时间:2024-07-24 16:01:27浏览次数:11  
标签:python python-typing mypy

在下面的示例中, Example.__init__ f_example 不带参数。因此,如果我尝试向他们传递一些参数,mypy 应该发出警告。但是,当我将 mypy 检查应用于以下代码时,它不会发出任何警告。我犯错了吗?

仅供参考,我还使用了 vim 和 Pyright,并且如我所料,pyright 警告这些错误。

class Example:
    a: int
    def __init__(self) -> None:
        self.a = 0

def f_example():
    return None

def test():
    e = Example()
    e2 = Example(1)
    f_example()
    f_example(1)

test()

你没有错,Mypy 应该 在你的代码中对 Example(1) f_example(1) 发出错误,因为它传递的参数比 __init__ f_example 所期望的要多。看起来你在 Mypy 中可能遇到了一个 bug 或配置问题。

以下是可能导致此问题的一些原因和解决方法:

  1. Mypy 版本: 确保你运行的是最新版本的 Mypy。旧版本可能包含导致此类行为被忽略的错误。通过运行 mypy --version 检查你的 Mypy 版本,并使用 pip install --upgrade mypy 进行更新。

  2. 配置文件: Mypy 的行为可以通过配置文件(通常是 mypy.ini setup.cfg )进行自定义。检查你的项目中是否存在配置文件,如果有,请确保它没有覆盖或禁用与参数类型检查相关的任何默认设置。有关更多信息,请参阅 Mypy 文档中的配置选项: https://mypy.readthedocs.io/en/stable/config_file.html

  3. 严格性设置: Mypy 提供了各种严格性标志,可以调整其执行类型检查的严格程度。确保没有禁用可能导致此行为的标志,例如 --disallow-untyped-calls --strict-optional 。你可以在命令行或配置文件中启用这些标志。

  4. 缓存问题: Mypy 使用缓存来提高性能。尝试使用 --no-cache 标志运行 Mypy 以禁用缓存并强制它重新检查所有文件。

如果在尝试了这些步骤后问题仍然存在,那么在 Mypy 中可能存在一个 bug。在这种情况下,请考虑在 Mypy 问题跟踪器中提交一个报告,其中包含一个最小的可重现示例: https://github.com/python/mypy/issues

同时,作为一种解决方法,你可以考虑使用其他类型检查器,比如 Pyright,你提到它已经正确地识别了这些错误。

标签:python,python-typing,mypy
From: 72053080

相关文章

  • 在python中查找区间数据的中位数
    我正在探索不同的python库,我想知道如何找到分组数据集的近似中值。这里有一个表格供参考。年龄频率1-1012310-203502......
  • 比较Python中的字符串统一特殊字符
    也许我可以使用更好的英语,但我想要的是忽略单词中的重音(和类似的),所以:renè、rené、rene'和rene应该是相同的,所以应该mañana和manana或even-distribuited和evendistribuited,可能还有sho......
  • 如何使用 Python 脚本从客户账单电子邮件中获取订单 ID - WooCommerce API
    我想创建一个python脚本,返回只知道客户的账单电子邮件的订单。我尝试这样做,但返回所有最近的订单:fromwoocommerceimportAPIwcapi=API(url="https://siteexample.com",consumer_key="ck_xxx",consumer_secret="cs_xxx",version="wc/v3")......
  • python基础理论小总结
    1.python语言的特性Python是一门解释型语言,简单清晰,开源免费,跨平台,有大量第三方库辅助开发,支持面向对象与自动垃圾回收,方便与其他编程语言相互调用。Python在数据采集、人工智能、WEB后台开发、自动化运维、测试等方向应用广泛。2.解释型语言和编译型语言的区别执行方式不......
  • python编码规范
    本篇讲的是代码格式化的问题,解决格式化的方法在最下方,不想看内容的,滑到最下方就好了。一、变量的命名规则1.组成:字母、数字、下划线2.不可以以数字开头3.不建议使用下划线开头4.命名需见名知意5.不要与关键字重名。如何查找所有关键字?importkeywordprint(keyword.k......
  • Python爬虫开发中的常用库与框架安装指南
    在Python爬虫开发中,选择合适的库和框架可以大大提高开发效率和爬虫的性能。本文将介绍一些常用的解析库、请求库、储存库、Web库、App爬取库以及爬虫框架,并展示如何使用pip命令进行安装。一、解析库1.BeautifulSoupBeautifulSoup是一个用于从HTML或XML文件中提取数据的Pyth......
  • 如何在Python中的指定项目之后添加新项目到嵌套列表?
    给定的列表是这样的。list1=[10,20,[300,400,[5000,6000],500],30,40]预期输出是这样的。我知道这是一个非常基本的问题,但我很困惑。输出:[10,20,[300,400,[5000,6000,7000],500],30,40]我希望有人能帮助我解决这个问题。并解释了嵌套列表的插入功......
  • python带界面实现word文档比对功能
    python实现word文档比对的功能较简单,笔者这里将其界面话,可以指定输入比对的文档,相似度,最小相似参数等。输出的结果以word的形式保存,重复部分会标出,基本实现了商业软件的功能。先看界面这里不废话了,直接给出全部源码,觉得好的点个赞。程序打包的话,自己百度。fromtkinterimp......
  • 具有固定字典键的 Python 函数返回类型提示
    我有一个函数返回一个始终具有相同键的字典(通过网络发送并使用json进行“字符串化”)。基本上我的函数看起来像这样:defgetTemps(self)->dict:"""getroomandcputemperaturein°Caswellashumidityin%"""#sendtemperaturerequesttoserve......
  • 在类型提示中使用 Type[class_name] 而不是仅使用 class_name 时,python 未解析的属性
    我想输入提示继承结构,但我不知道如何正确执行。这个想法是函数c可以采用A的任何子类。一些子类具有其他子类没有的属性,并且这些属性不是在父类中定义,而是在子类中定义。函数c检查子类,如果它是正确的,则使用该类的特定属性。在此设置中,PyCharm抱怨该参数不在父类中。from......