问题标签 [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.

0 投票
2 回答
16240 浏览

python - 类方法返回实例的 MyPy 注释

我应该如何注释@classmethod返回实例的a cls?这是一个不好的例子:

这将返回一个Foo但更准确地返回调用它的任何子类Foo,因此使用注释-> "Foo"还不够好。

0 投票
1 回答
2134 浏览

python-3.x - Mypy 使用覆盖的方法报告不兼容的超类型错误

下面是我遇到的问题的简化示例mypy。该A.transform方法采用对象的可迭代对象,转换每个对象(在子类中定义B,可能还有其他子类)并返回转换对象的可迭代对象。

然而mypy说:

[T]如果我从中删除A.transform(),那么错误就会消失。但这似乎是错误的解决方案。

在阅读了covariance 和 contravariance之后,我认为设置 T = TypeVar('T', covariant=True)可能是一个解决方案,但这会产生相同的错误。

我怎样才能解决这个问题?我考虑过将设计完全装箱并用高阶函数替换 A 类。

0 投票
1 回答
105 浏览

python - python类型:是否可以在创建变量之后指定变量的类型?

我知道当它们作为函数参数传递(: Header如下)或创建它们时(使用# type:指令)可以指定变量类型。

但是是否可以在代码中间(通常在if块内)指定变量的预期类型是什么?

例如在下面的函数中,我想指定我的变量是一个特定的子类,Header以避免 PyCharm 警告“Unresolved attribute reference 'unit' for class 'Header'”:

谢谢。

0 投票
2 回答
7222 浏览

python - 如何在 Python 中将 typing.Union 转换为其子类型之一?

我正在使用 Python 3.6.1、mypy 和打字模块。我创建了两个自定义类型,FooBar,然后在我从函数返回的字典中使用它们。dict 被描述为映射到straUnion和。然后我想在一个函数中使用这个dict中的值,每个函数只命名一个参数:FooBar

我尝试按原样使用这些值:

或使用以下类型:

如何将Union其转换为其子类型之一?

0 投票
1 回答
569 浏览

python - 使用 MyPy 作为库获取 Python 表达式中的类型

我有一些 Python 源代码,想找出变量的类型。例如给定字符串

我想拥有get_type('greeting') == str。或者更复杂的例子:

在伪代码中,我希望能够执行以下操作:

似乎这应该可以在 Python 3 中使用类型注释和 MyPy,但我不知道如何。像 VS 代码这样的 IDE 已经非常擅长猜测 python 代码中的类型,这就是为什么我猜测必须有一种公开的方式来做到这一点。

似乎有一个模块typed-ast,它也被 MyPy 使用,这让我成为了其中的一部分。但是,这并没有类型推断或传播,它只是给了我据我所知的显式注释。MyPy 作为 api,但它只允许您运行检查器,并返回与命令行工具相同的错误消息。我正在寻找一种“接触”MyPy 的方法,并获取一些推断的信息——或者一些我没有想到的替代解决方案。

0 投票
2 回答
1374 浏览

python - mypy:如何解决这种元组混淆

Python 3.6 对此元组示例没有问题:

输出:

但是 mypy 0.511 似乎会感到困惑并报告错误:

我能做些什么来帮助 mypy 了解发生了什么?

0 投票
4 回答
21336 浏览

python - 使用 Python 输入模块指定序列或列表的长度

我正在尝试 Pythontyping模块。

我知道指定List如下*的长度是有效的:

是否有更长列表的简写?如果我想将它设置为 10 个浮点数怎么办?

任何想法,如果这是可能的,这将很方便。


*注意:事实证明,Sequence[]以这种方式向(及其子类)提供多个参数当前不是有效的 Python。此外,目前无法以这种方式使用模块指定Sequence长度。typing

0 投票
1 回答
1695 浏览

python - mypy:无法推断“map”的类型参数 1

尝试使用 mypy 检查以下代码时:

mypy 抛出以下错误:

calculate.py:17:错误:无法推断“地图”的类型参数 1

为什么会出现这个错误?我该如何解决?

谢谢 :)

编辑:这实际上是mypy 中的一个错误,现在已修复。

0 投票
1 回答
1132 浏览

python - `TypeVar`:参数类型作为`bound`参数的值

我想实现一个这样的泛型类:

我已经尝试过以下方法:

它可以与 MyPy 一起按预期工作。但是,当 Python 解释器运行此代码时,它给了我以下错误:

正如我发现的那样,这意味着TypeVar没有[]实现操作员。

有没有人知道如何获得同时满足 mypy 和 Python 解释器的解决方案?

编辑:我还尝试了以下方法:

Python 解释器不会给出任何错误/警告。但是 mypy 抱怨第二行:

0 投票
1 回答
1209 浏览

python - 在 mypy 中记录处理程序名称注释

我正在尝试在 Python 3 中使用 mypy 注释我的日志记录模块,但是,我在注释 namer 函数时遇到了问题:

当我运行 mypy 时,将 _namer 分配给 handler.namer 时出现此错误:

知道我应该如何注释 _namer 以便 mypy 不会抱怨吗?