问题标签 [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 - Python Mypy 属性错误
我有一个 python3.4 项目,我最近决定使用 mypy 来更好地理解。
这段代码可以工作,但是用 mypy 检查会弹出一个错误:
错误 :
PyPreviewGenerator/file_converter.py:170: error: "ZipFile" has no attribute "filelist"
(对应于这一行for line, info in enumerate(zz.filelist):
:)
但是当我查看 ZipFile 类内部时,我可以清楚地看到该属性存在。
那么为什么会发生错误呢?有没有办法解决它?
python - 使用 Mypy 存根文件与在函数定义中写入类型提示不同
我尝试在函数的定义中明确编写类型提示
运行python3.5 -m mypy test.py
并收到以下消息
这是正确的。但是当我尝试使用存根文件时
我什么都没有。我看到了这个答案Using Mypy local stubs。所以我尝试import
。
没关系。我有
但是电话annotated(2, 's')
还是一无所获。
那么我应该怎么做才能检查存根文件的非法操作呢?谢谢
python - 一种将 NamedTuple 子类化以进行类型检查的方法
我有几个namedtuple
共享某些领域的 s。我有一个接受这些元组的函数,并保证只与共享字段交互。我想在 mypy 中对此类代码进行类型检查。
代码示例如下:
当我在这段代码上运行 mypy 时,我得到一个可预测的错误:
mypy_example.py:20:错误:“DoSomething”的参数 1 具有不兼容的类型“BaseExtended”;预期的“基地”
有没有办法构建我的代码并保持 mypy 类型检查?我不能BaseExtended
从继承Base
,因为继承实现中有一个错误。NamedTuple
我也不想使用丑陋Union[Base, BaseExtended]
的,因为当我尝试对 a 进行类型检查时,这会中断,List
因为List[Union[Base, BaseExtended]]
不等于mypy 关于变体/协变类型的魔法。List[BaseExtended]
我应该放弃这个想法吗?
python - 无法使 Mypy 与 __init__.py 别名一起使用
以下是我的问题的最小示例:
模块或 __init__.py 的 Mypy 输出:
代码本身在 Python 2 和 Python 3 上运行良好。
python - 自引用 mypy 类型中的“无效类型”错误
我定义了以下类型:
当我运行时mypy
,我收到以下错误:
这是重现错误的完整最小代码:
谢谢!
python - 使用 mypy 进行类型检查:具有公共字段的“结构”
我有几个共享类型字段的简单“结构”。我想定义一个在假设这些字段存在的情况下运行的函数,并且我想用 mypy 进行类型检查。
有一个封闭的 mypy 功能请求#3521,其中有一个我想要的简明示例:
不幸的是,似乎 NamedTuples 在任何时候都不允许使用此类功能(请参阅两个已关闭的问题:#3521和#427)
我之前问过一个类似的问题(A way to subclass NamedTuple for typechecking),我得到了一个很好的回应,指向PEP544的方向。虽然 PEP544 中描述的“协议”是一个好主意,但它是为适当的类设计的,对于共享几个字段的任务来说有点太多了。
如果有 NamedTuples 的替代品,请告诉我。
python - python 3.5代码中的变量需要类型注释
我mypy
在我的 python 3.5 代码上使用,我收到了很多看起来像这样的消息:
文件:行号:错误:需要变量的类型注释
但是我读到了新功能,python 3.6
因为它仅在以下位置引入了变量注释的语法python 3.6
:
PEP 484 引入了函数参数类型注释的标准,也就是类型提示。这个 PEP 为 Python 添加了用于注释变量类型的语法,包括类变量和实例变量......
如果我试图在python 3.5
程序中为我的变量添加变量类型注释,它会抛出SyntaxError
.
我应该怎么办?忽略此消息?更新到python 3.6
? 为什么mypy
像编写的那样编译我的代码python 3.6
?
python - 如何在 mypy 中使用reveal_type
我读过我可以通过使用一个名为 的函数来揭示变量的类型reveal_type
,但我找不到如何使用它或从哪里导入它。
python - 如何在 NamedTuple 上重载`+`
如何在 3.5 中为命名元组创建 plus 的自定义重载?我知道 3.6 中有一些新的语法,你能在 3.5 中做到吗?我也希望它通过 mypy 检查。
python - mypy 错误:列表或元组文字应作为 namedtuple() 的第二个参数
我在 Python 3.5 中编写了这段代码:
当我运行 Mypy 类型检查器来分析此代码时,它引发了错误:
错误:列表或元组文字应作为第二个参数
namedtuple()
我尝试向attributes
变量添加类型注释:
但它并没有解决引发的错误。