我在使用 mypy 时遇到了问题,并且能够找到有关它的任何帮助/报告。以下简化代码和错误消息应该是不言自明的:
#!/usr/bin/env python3
from typing import List, Union
class Corpus:
path: List[str]
def __init__(self, path:Union[str,List[str]]) -> None:
if type(path) == str:
self.path = [path]
else:
self.path = path
Run Code Online (Sandbox Code Playgroud)
Mypy 给出以下错误:
simplified.py:10: error: List item 0 has incompatible type "Union[str, List[str]]"; expected "str"
simplified.py:12: error: Incompatible types in assignment (expression has type "Union[str, List[str]]", variable has type "List[str]")
Run Code Online (Sandbox Code Playgroud)
尽管检查了路径变量的类型,以便 self.path 应始终生成字符串列表,但 mypy 仍会抱怨类型不兼容。
我是否忽略了某些事情或者这是 mypy 中的错误?(如果这是一个错误,我应该使用#type: ignore注释还是有更好的解决方法?)
(一些背景:我决定通过编写一个模块来简化我的生活,该模块将处理一些重复的工作。有问题的参数应该是文本数据的路径,我希望它在大多数情况下只是一个字符串,所以我不不想强制将其放入列表中。但是,我也希望允许指定更多路径。在内部,我无论如何都将其存储为列表,因为类上的迭代器始终使用此类列表进行初始化(然后可能通过以下方式进一步扩展它) “解压”目录))。
| 归档时间: |
|
| 查看次数: |
1736 次 |
| 最近记录: |