问题标签 [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.
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 中不起作用。
我打开了这个问题,但他们说一切都很好,这不是一个错误。
我的问题:
- 谁对 PEP 484 的理解有误?
- 哪种方式可以将所有字段从真实模块重新导出到存根?
python - Python >=3.5:在运行时检查类型注释
模块(或任何其他模块)是否typing
展示了在运行时对变量进行类型检查的 API,类似于isinstance()
但理解中定义的类型类typing
?
我想运行类似于:
python - 具有已知键输入的 Python 3 字典
我正在使用 Python 3 打字功能来更好地自动完成。
很多时候,我有返回带有特定键的键/值(字典)的函数。超级简单的例子:
我想给这个函数添加类型提示,告诉其他使用这个函数的人会发生什么。
我可以做类似的事情:
然后将函数签名更改为:
但是每个字典都需要太多的代码。
在这种情况下,最佳做法是什么?
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?
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 错误:列表或元组文字应作为 namedtuple() 的第二个参数
我在 Python 3.5 中编写了这段代码:
当我运行 Mypy 类型检查器来分析此代码时,它引发了错误:
错误:列表或元组文字应作为第二个参数
namedtuple()
我尝试向attributes
变量添加类型注释:
但它并没有解决引发的错误。
python - 使用用户定义的类键入提示
似乎找不到明确的答案。我想为一个函数做一个类型提示,类型是我定义的一些自定义类,称为它CustomClass()
。
然后让我们说在某个函数中,调用它FuncA(arg)
,我有一个名为 的参数arg
。输入提示的正确方法FuncA
是:
或者会是:
python - 使用 Python 输入模块指定序列或列表的长度
我正在尝试 Pythontyping
模块。
我知道指定List
如下*的长度是有效的:
是否有更长列表的简写?如果我想将它设置为 10 个浮点数怎么办?
任何想法,如果这是可能的,这将很方便。
*注意:事实证明,Sequence[]
以这种方式向(及其子类)提供多个参数当前不是有效的 Python。此外,目前无法以这种方式使用模块指定Sequence
长度。typing
python - 返回子类实例的基类上的工厂方法的 Python 3 类型提示
假设我有两个类Base
,并且Child
在Base
. 工厂方法调用另一个可能被Base
的子类覆盖的类方法。
有没有办法进行注释Base.create
,以便静态类型检查器可以推断Base.create()
返回的实例Base
和Child.create()
返回的实例Child
,以便以下示例通过静态分析?
在上面的示例中,静态类型检查器会正确地抱怨类method_not_present_on_base
中不存在Base
。
我想过Base
变成一个泛型类并让子类将自己指定为类型参数,即将CRTP引入 Python。
但这对于来自 C++ 的 CRTP 和所有...