繁体   English   中英

如何键入提示其值本身就是类型提示的变量?

[英]How do I type hint a variable whose value is itself a type hint?

我有一个 function ,其中一个 arguments 应该是一个类型提示:类似于typing.Listtyping.List[int] ,甚至只是int 您可以合理地期望将其视为普通字段的类型注释的任何内容。

对此参数的正确类型提示是什么?

(上下文是我正在编写一个实用程序,该实用程序适用于使用类型注释定义字段的类,有点像 dataclass 装饰器。)

几乎完整但可读性较差的答案:

type | types.GenericAlias | types.UnionType | typing._BaseGenericAlias | typing._SpecialForm

以下是我能想到的所有类型注释的可能性:

  • 类型 object 本身,如intlist等,对应type
  • 在标准 collections 中键入提示 generics ,例如list[int] 对应于types.GenericAlias
  • 类型 union ,例如int | floas int | floas (但typing.Union[int, float]不是,它对应于下一项)。 对应于types.UnionType
  • 泛型具体 collectionstyping中,如typing.Listtyping.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM