使用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文档中的types部分包括以下内容:“attrs
还允许您使用attr.ib()的type参数或使用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] = []
。