使用attrs 库和 Python 3.6,我认为以下内容可以让我指定它x
并且y
只能包含整数:
import attr
@attr.s
class C:
x : List[int] = attr.ib() # not working
y = attr.ib(type=List[int]) # not working either
两条注释行都抛出一个NameError: name 'List' is not defined
.
我期望它起作用的原因是:
(1) attr 文档的类型部分包括以下段落:“attrs
还允许您使用 attr.ib() 的类型参数或 - 从 Python 3.6 开始 - 使用 PEP 526-annotations 将类型与属性相关联” . 然后它演示了这两种方法:
@attr.s
class C:
x = attr.ib(type=int)
y: int = attr.ib()
(2) PEP 526声明以下类型注释的语法是有效的:primes: List[int] = []
.