[英]How can I type hint a variable whose Union type gets narrowed in Python?
[英]How do I type hint a variable whose value is itself a type hint?
我有一个 function ,其中一个 arguments 应该是一个类型提示:类似于typing.List
或typing.List[int]
,甚至只是int
。 您可以合理地期望将其视为普通字段的类型注释的任何内容。
对此参数的正确类型提示是什么?
(上下文是我正在编写一个实用程序,该实用程序适用于使用类型注释定义字段的类,有点像 dataclass 装饰器。)
几乎完整但可读性较差的答案:
type | types.GenericAlias | types.UnionType | typing._BaseGenericAlias | typing._SpecialForm
以下是我能想到的所有类型注释的可能性:
int
、 list
等,对应type
。list[int]
。 对应于types.GenericAlias
。int | floas
int | floas
(但typing.Union[int, float]
不是,它对应于下一项)。 对应于types.UnionType
。typing
中,如typing.List
、 typing.List[int]
等。这里我选择公共基础 class typing._BaseGenericAlias
,第一次出现在他们的 Z5FED3411FAF832174EF1F04002 链中。 (其实不只是这些, typing
中几乎所有的下标注解类都继承自这个class,包括typing.Literal[True]
、 typing.Union[int, float]
等)typing.Any
,打字typing.NoReturn
等。对应于typing._SpecialForm
。 需要注意的是,后两种类型以单下划线开头,表示它们是内部类型,不应从typing
中导入和使用。 但是,如果您坚持完全覆盖所有类型注释,它们应该是必不可少的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.