问题标签 [python-typing]

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 投票
0 回答
314 浏览

python - PEP 484 与 PyCharm 2017.1

我有很多领域的几个模块。PyCharm 对某些字段没有自动完成功能(例如:PyCharm 不支持 typping.NamedTyple)。我将这些字段的描述添加到存根文件中。它在 PyCharm 2016 中有效。但现在 PyCharm 对 PEP484 有更好的(但它真的更正确吗?)支持,它忽略了原始模块中的字段。

引自 PEP484:“但是,作为上一个项目符号的例外,使用 from ... import * 导入存根的所有对象都被视为已导出。(这使得从给定模块重新导出可能会有所不同的所有对象变得更加容易按 Python 版本。)” https://www.python.org/dev/peps/pep-0484/#stub-files

我想这意味着我可以from <real module> import *.pyi文件中这样做。但它在 PyCharm 2017.1 中不起作用。

例子: 在此处输入图像描述

我打开了这个问题,但他们说一切都很好,这不是一个错误。

我的问题:

  1. 谁对 PEP 484 的理解有误?
  2. 哪种方式可以将所有字段从真实模块重新导出到存根?
0 投票
3 回答
14111 浏览

python - Python >=3.5:在运行时检查类型注释

模块(或任何其他模块)是否typing展示了在运行时对变量进行类型检查的 API,类似于isinstance()但理解中定义的类型类typing

我想运行类似于:

0 投票
1 回答
22776 浏览

python - 具有已知键输入的 Python 3 字典

我正在使用 Python 3 打字功能来更好地自动完成。

很多时候,我有返回带有特定键的键/值(字典)的函数。超级简单的例子:

我想给这个函数添加类型提示,告诉其他使用这个函数的人会发生什么。

我可以做类似的事情:

然后将函数签名更改为:

但是每个字典都需要太多的代码。

在这种情况下,最佳做法是什么?

0 投票
2 回答
25819 浏览

python - Python type hinting with exceptions

I have a function that looks like this:

In successful run of this function, I should get a bool, but if there is an error I should get a TypeError- which is OK because I deal with it in another function.

My function first line looks like this:

My question is: Should I mention the error in my type hinting?

0 投票
2 回答
7701 浏览

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]

我应该放弃这个想法吗?

0 投票
2 回答
2633 浏览

python - mypy 错误:列表或元组文字应作为 namedtuple() 的第二个参数

我在 Python 3.5 中编写了这段代码:

当我运行 Mypy 类型检查器来分析此代码时,它引发了错误:

错误:列表或元组文字应作为第二个参数namedtuple()

我尝试向attributes变量添加类型注释:

但它并没有解决引发的错误。

0 投票
2 回答
69633 浏览

python - 使用用户定义的类键入提示

似乎找不到明确的答案。我想为一个函数做一个类型提示,类型是我定义的一些自定义类,称为它CustomClass()

然后让我们说在某个函数中,调用它FuncA(arg),我有一个名为 的参数arg。输入提示的正确方法FuncA是:

或者会是:

0 投票
4 回答
21336 浏览

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

我正在尝试 Pythontyping模块。

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

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

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


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

0 投票
3 回答
8130 浏览

python - 实例变量 Python 的类型提示约定

我不确定类型提示实例变量的 Python 约定 - 我一直在__init__构造函数参数中执行它们,如下所示

但我也看到了注释实例变量的 PEP 约定(下面的片段),然后还在__init__参数中进行类型提示:

最后,稍后在 PEP 526 文章中,他们说为了方便和惯例,可以执行以下操作:

(以上两个代码片段都来自这里。)

那么 - 这些约定之一是否比我应该尝试坚持的其他约定更好/更广泛接受(更好的可读性等)?

0 投票
1 回答
9557 浏览

python - 返回子类实例的基类上的工厂方法的 Python 3 类型提示

假设我有两个类Base,并且ChildBase. 工厂方法调用另一个可能被Base的子类覆盖的类方法。

有没有办法进行注释Base.create,以便静态类型检查器可以推断Base.create()返回的实例BaseChild.create()返回的实例Child,以便以下示例通过静态分析?

在上面的示例中,静态类型检查器会正确地抱怨类method_not_present_on_base中不存在Base


我想过Base变成一个泛型类并让子类将自己指定为类型参数,即将CRTP引入 Python。

但这对于来自 C++ 的 CRTP 和所有...