问题标签 [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 - 如何在 Python 类型提示中表达多重继承?
在 Java、C# 中,泛型方法可以有一个带约束的类型参数来定义必须实现的接口。
在Python中,如果我想使用类型提示来指定一个变量必须继承类A和B,我该怎么做?我检查了打字模块,它只有一个联合,这意味着变量的类型可以是任何提示,而不是所有提示。
创建一个继承 A 和 B 的新类 C 似乎是一个解决方案,但看起来很麻烦。
python - Python 3.x 元组类型提示
我是一个“老”的 Python 程序员(几年),但我对这种语言的类型提示原则相对较新。
因此,当我将项目的代码转换为使用类型提示时,我的 linter (flake8) 给了我一个我不明白的错误。这是代码示例和具体错误:
来自 linter 的错误是这样的: F821:undefined name 'AttributeModel' F821:undefined name 'AttributeValueModel'
有人可以解释我为什么得到这个吗?类是正确定义的,不是吗?
谢谢您的帮助
python - 来自父类的类型提示
你怎么能像这样从父类中暗示一个类?
python - mypy 方法定义与基类中的定义不兼容
我有一个做某事的父类和两个以正交方式包装方法的子类。当我尝试合并两个子类时,mypy 抱怨以下错误。
基类“Foo”中“run”的定义与基类“Bar”中的定义不兼容
这两个类如何“不兼容”以及如何修改我的代码以安抚mypy?我可以不做吗
python - Python 2 中的 Python 3 类型提示
我有def
似乎适用于 python3 的 python 定义:
在 python2 下,我收到以下语法错误:
如何使类型提示与 python2 兼容?
python - 为什么 Python sys.version_info 缺少 _asdict() 方法来转换为字典?
sys.version_info 是否有一些独特之处,这意味着它没有返回正确的命名元组并且没有该_asdict
功能?
python - 如何在函数中键入提示文件名?
Python中提示文件名的最佳方法是什么,以便将任何内容传递给可以作为文件打开的函数是可以接受的?
尤其是通过 Pathlib 找到的字符串和文件。
python-3.x - python打字:如何继承自我类型(使用静态类型)
我希望一个子类继承其父类返回的方法self
。这样做时,类型检查器(mypy)默认将返回类型保留为父类。我希望它自动将子类推断为返回类型。对于简单的情况,我发现以下代码可以工作:
如果我尝试使用上下文管理器,这个“解决方案”就会崩溃:
它适用于第一种情况,但不适用于第二种情况。我认为这是因为我没有指定typing.ContextManager
. 如果我这样做,mypy 会将这两种类型显示为Any
:
据我了解,发生这种情况是因为此时Self
未绑定到任何具体类型。我现在有点迷茫,我没有找到任何办法让它工作......这甚至可能吗?
python - (任何)python 模块的类型提示是什么?
我想为模块(类“模块”)添加(Python3)类型提示。该typing
包不提供一个,它types.ModuleType()
是一个构造函数,它返回一个特定名称的模块对象。
例子:
至少在 PyCharm 中会导致
“在 types.pyi 中找不到引用 ModuleType”。
请注意,模块类型的 Python 类型不能回答我的问题,因为它没有解释ModuleType
它既是构造函数又是类型,如下面的回答。
python - 在 Python 中定义递归类型提示?
假设我有一个接受 a Garthok
、 an Iterable[Garthok]
、 anIterable[Iterable[Garthok]]
等的函数。
有没有办法为 arg 指定一个类型提示,表明它接受任何级别的Iterable
s Garthok
?我怀疑不是,但我想我会检查我是否遗漏了什么。
作为一种解决方法,我只是指定了几个级别,然后以Iterable[Any]
.