作为一个实验,我想在我的项目中添加类型注释并使用mypy --strict
进行测试。请考虑以下代码和以下错误消息:
#!/usr/bin/env python
import typing as T
from dataclasses import dataclass
@dataclass(frozen=True)
class Question:
choices: T.Tuple[None]
def gen_question() -> Question:
choices = [None]
return Question(choices=tuple(choices))
if __name__ == '__main__':
gen_question()
这是错误消息:
test.py:18: error: Argument "choices" to "Question" has incompatible type "Tuple[None, ...]"; expected "Tuple[None]"
有什么我做错了,还是那个bug?我该如何解决这个问题?
看来,在键入的情况下。根据documentation,如果我需要指定一个可变长度的元组,我需要添加, ...
,如下所示:
choices: T.Tuple[None, ...]
请注意,这似乎不适用于列表。