mypy Dict 类型中的键类型检查

问题描述 投票:0回答:1

我最近开始使用 mypy。 有没有办法可以在 mypy 中对 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 键的字典键进行比较。有没有办法 mypy 可以警告这种无效比较

python python-typing mypy
1个回答
2
投票

是——使用

--strict-equality
标志。如果启用此标志,mypy 将产生以下错误:

test.py:8: error: Non-overlapping container check (element type: "str", container item type: "int")

您可以在 mypy 文档中有关其支持的命令行标志的其他严格性选项底部附近找到有关此标志的更多信息。

如果您喜欢更严格的类型检查,您可以启用更多严格性标志 - 使用

--strict
标志将启用其中的大多数。 (虽然不是
--strict-equality
标志,但必须单独配置。

© www.soinside.com 2019 - 2024. All rights reserved.