问题标签 [mypy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - MyPy / python 类型提示没有捕获可以返回多种类型的调用函数
attrgetter函数可以根据您给它的参数返回不同的类型。如果您通过一个项目传递一个可迭代对象,它将仅返回对象的给定字段;如果你将一个包含多个项目的迭代传递给它,它会返回一个对象的这些字段的元组。
但是,当使用类型提示 + MyPy 时,MyPy 不会发现这种差异(它不会引发错误):
和输出:
预期的结果将是这样的:
这是 MyPy 中的错误吗?
python - 应该如何使用python pep484类型检查返回self的上层方法
如何在一个类中定义一个函数,使得函数的返回类型是“当前类”——而不是基类。例如:
还是应该以某种方式施放它?如果返回类型是基类,那么它会报错。
我知道可以将它放到两行并添加临时变量来保存 Child(),但我认为单行看起来更好看。
我使用 mypy 进行类型检查。
python-3.x - 使用 mypy 仅对函数头进行类型检查
有没有办法让 python3 mypy 只检查类型提示的函数头,而不是函数内的变量?
python - 在 mypy 中,如何对继承自 NamedTuple 的类的方法进行类型检查?
根据 mypy 文档,如果一个类需要引用自身,它可以使用forward-reference。
这似乎适用于普通类,但我无法让它与继承自 NamedTuple 的类一起使用。
更新:Guido van Rossum 本人已经在 Github 上回答了这个问题。
我不是 100% 确定你想要完成什么,但根据你最初的例子,我猜你想为 B 类重新定义 + 以在 B 的实例上实现元素加法。 mypy 的原因没有默认情况下不支持这个被称为“Liskov 替换原则”(你可以谷歌它以获得解释)。
但是有一个解决方法:将 # type: ignore 放在产生错误的行(def add行)上。这听起来不太好,但是只要您从不将 B 实例传递给假定它是元组并尝试对其进行元组连接的代码,它就会做您想做的事情。
python - 类型化python:在类定义中使用类自己的类型
以下代码无法按预期工作。显然,我不能在类定义中使用类自己的类型:
运行它的结果是:
此外,使用mypy
返回检查代码:
如何更正此代码以使其对 Python 和 for 都有效mypy
?
python - Python动态属性和mypy
我试图将一些函数屏蔽为属性(通过这里不重要的包装器)并将它们动态添加到对象中,但是,我需要代码完成和 mypy 才能工作。
我想出了如何动态添加属性(通过元类或简单地在构造函数中),但我遇到的问题是 mypy 没有选择它(IDE 也没有)。
一种解决方法是定义具有相同名称/类型的属性,但我真的不喜欢这种方法(代码过多、静态属性集、重复)。
有没有更好的办法?
python - 返回类的类型声明,在 PyCharm 中给出错误
我正在尝试使用类型注释来提高我的代码清晰度。以下代码在 PyCharm Community Edition 2016.3.3 中出现错误:
PyCharm 在backend_cls(name)
表达式中突出显示了该错误,并读取'Type' object is not callable。但是,代码运行良好,甚至mypy thisexample.py
没有显示任何错误。
有没有办法让 PyCharm 增强它的冷静,明白一切都很好?还是我误解了某些东西并且 mypy 给出了误报?
这是在 Ubuntu 16.10 上使用 Python 3.6.0 和 mypy-0.501。
python - MyPy:请求对象的类型是什么?
我正在尝试使用 Python 3 的类型提示语法以及 MyPy 静态类型检查器。我现在正在编写一个接受requests
响应对象的函数,我想知道如何指示类型。
也就是说,在下面这段代码中,我可以用什么来代替???
?
python - Mypy:以抽象类为值的地图类型注释
我正在开发一个具有各种存储后端的框架。这些后端都实现了一个抽象基类。后端类存储在从后端名称到实现该后端的类的映射中。
我们希望能够使用mypy执行类型检查,并注释如下:
运行 mypy-0.501 会出现此错误:
typingtest.py:32: error: Cannot instantiate abstract class 'A' with abstract attribute 'get_name'
我的问题:我们如何注释映射backends
,以便 mypy 理解它只包含 的非抽象子类A
?
python - mypy 在 argparse 上出现“命名空间没有属性 XXX”错误
我正在尝试mypy
用于类型注释。我写了一个简单的test.py
运行后mypy test.py
,出现错误:
test.py:8:错误:“命名空间”没有属性“开发”
我的假设是 Namespace 类的属性是动态创建的,因此它们无法被mypy
? 替换最后一行后,我可以解决此错误消息,setattr(args, 'dev', True)
但这看起来不正确...有人可以帮我理解这个问题吗?我正在使用 Python 3.6.1。