70得票2回答
类型注释中未定义名称

我目前正在创建一个用于个人娱乐和练习语言技能的python线性代数模块。最近,我尝试为该模块添加类型注释,如下所示:class Vector: # Various irrelevant implementation details def __add__(self, oth...

68得票4回答
动态创建文本别名的输入方式:从有效值列表中

我有一个函数,它验证其参数只接受给定有效选项列表中的值。在类型方面,我使用了“字面量”类型别名来反映这种行为,如下所示: ```Literal```. from typing import Literal VALID_ARGUMENTS = ['foo', 'bar'] Argum...

68得票10回答
Python:针对argparse.Namespace对象的类型提示

有没有办法让Python静态分析器(例如PyCharm、其他IDE)捕获argparse.Namespace对象上的 Typehints? 例如: argparse.Namespace parser = argparse.ArgumentParser() parser.add_argumen...

67得票4回答
Python 3的类型提示用于装饰器。

Consider the following code: from typing import Callable, Any TFunc = Callable[..., Any] def get_authenticated_user(): return "John" def requir...

65得票2回答
TypeVar('T', A, B) 和 TypeVar('T', bound=Union[A, B]) 之间的区别是什么?

以下两个TypeVar之间有什么区别? from typing import TypeVar, Union class A: pass class B: pass T = TypeVar("T", A, B) T = TypeVar("T", bound=Union[A, B]) ...

60得票5回答
如何在Python 3.6中使用类型提示?

我注意到Python 3.5和Python 3.6增加了很多关于静态类型检查的功能,所以我尝试了以下代码(在python 3.6稳定版本中)。from typing import List a: List[str] = [] a.append('a') a.append(1) print(a...

60得票2回答
在Python中定义递归类型提示?

假设我有一个函数,接受一个Garthok、一个Iterable[Garthok]、一个Iterable[Iterable[Garthok]]等。def narfle_the_garthoks(arg): if isinstance(arg, Iterable): for value...

59得票9回答
如何正确地为Mixin类添加类型提示?

考虑以下示例。这个例子是人为的,但通过可运行的示例说明了要点:class MultiplicatorMixin: def multiply(self, m: int) -> int: return self.value * m class AdditionM...

59得票4回答
Python 3.10+: Optional[Type] 或 Type | None

现在Python 3.10已发布,当指示参数或返回值可能是可选的,即可以为None时,是否有任何偏好。那么哪个更受欢迎: 选项1:def f(parameter: Optional[int]) -> Optional[str]: 选项2:def f(parameter: int | No...

59得票4回答
Python >=3.5: 运行时检查类型注释

typing模块(或其他模块)是否有一个API可以在运行时进行类型检查,类似于isinstance(),但能够理解typing中定义的类型类别? 我想要运行类似于以下代码的内容:from typing import List assert isinstance([1, 'bob'], Lis...