проверка типов ключей в Mypy Dict type - PullRequest
0 голосов
/ 19 сентября 2019

Я недавно начал использовать mypy.Есть ли способ, которым я могу проверить тип DIC ключей в MyPy.

Например).

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.В следующем коде я сравниваю строковый объект с ключом Dictionary, который может содержать только ключ int.Есть ли способ, которым mypy может предупредить об этом неверном сравнении

1 Ответ

1 голос
/ 19 сентября 2019

Да - используйте флаг --strict-equality.Если вы включите этот флаг, mypy выдаст следующую ошибку:

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

Более подробную информацию об этом флаге вы найдете в нижней части раздела Прочие параметры строгости в документации по mypy оподдерживаемые ею флаги командной строки.

Есть много других флагов строгости, которые вы можете включить, если вы предпочитаете более строгую проверку типов - использование флага --strict включит большинство из них.(Хотя не флаг --strict-equality, который должен быть настроен отдельно.

...