该 语法 确实有效。但是,PEP
484添加的通用类型注释对象不在内置名称空间中,而是在
typing模块中。
因此,您需要执行所
attrs链接文档中的所有示例,PEP 484,PEP
483,PEP 526和
typing文档都应执行以下操作:
from typing import List
另外,请注意,这只是一个注释。您仍然可以写作
c = C(x=[], y=[1.0]),但不会得到
TypeError。正如您链接的文档所说:
attrs本身还没有任何可用于类型元数据的功能。但是,这对于编写自己的验证器或序列化框架很有用。
完全不清楚
attrs应 如何处理此元数据。PEP 483 / PEP
484是设计的核心部分,类型注释只不过是运行时注释,不会影响值的类型或存储位置的合法性;只有静态类型检查器和其他与Python分开运行的工具才能使用它们。
特别是Mypy(参考标准静态类型检查器),某些linter和某些IDE应该将此标记为错误。如果他们还不支持
attrib注释,那么几乎可以肯定他们正在努力(因为它们大致等效于3.7
/ PEP 557中的
dataclass注释属性)。



