mypy Dict 类型中的键类型检查
key typechecking in mypy Dict type
我最近开始使用 mypy。
有没有一种方法可以在 mypy.dic 中对 Dic 键进行类型检查?
例如)。
from __future__ import annotations
from typing import List, Set, Dict, Tuple, Optional
import sys
adj_list: Dict[int,List[int]] = {}
if "x" not in adj_list.keys():
print('Not found')
以上代码没有显示任何 mypy 警告。在下面的代码中,我将一个字符串对象与只能容纳一个 int 键的 Dictionary 键进行比较。 mypy 有没有办法警告这个无效的比较
是——使用 --strict-equality
标志。如果启用此标志,mypy 将产生以下错误:
test.py:8: error: Non-overlapping container check (element type: "str", container item type: "int")
您可以在 mypy 文档中关于它支持的命令行标志的 Miscellaneous strictness options section 底部附近找到有关此标志的更多信息。
如果您喜欢更严格的类型检查,您可以启用更多的严格标志——使用 --strict
标志将启用其中的大部分。 (虽然不是--strict-equality
标志,必须单独配置。
我最近开始使用 mypy。 有没有一种方法可以在 mypy.dic 中对 Dic 键进行类型检查?
例如)。
from __future__ import annotations
from typing import List, Set, Dict, Tuple, Optional
import sys
adj_list: Dict[int,List[int]] = {}
if "x" not in adj_list.keys():
print('Not found')
以上代码没有显示任何 mypy 警告。在下面的代码中,我将一个字符串对象与只能容纳一个 int 键的 Dictionary 键进行比较。 mypy 有没有办法警告这个无效的比较
是——使用 --strict-equality
标志。如果启用此标志,mypy 将产生以下错误:
test.py:8: error: Non-overlapping container check (element type: "str", container item type: "int")
您可以在 mypy 文档中关于它支持的命令行标志的 Miscellaneous strictness options section 底部附近找到有关此标志的更多信息。
如果您喜欢更严格的类型检查,您可以启用更多的严格标志——使用 --strict
标志将启用其中的大部分。 (虽然不是--strict-equality
标志,必须单独配置。