PyCharm中文本类型检查错误的Python列表(对于具有文本键的dict相同)
我想在Python中使用文字类型提示的优点,但似乎文字不能正确识别为dict键或列表:PyCharm中文本类型检查错误的Python列表(对于具有文本键的dict相同),python,pycharm,mypy,Python,Pycharm,Mypy,我想在Python中使用文字类型提示的优点,但似乎文字不能正确识别为dict键或列表: from typing import Literal, Dict, List T = Literal['foo', 'bar'] L = List[T] D = Dict[T, int] q: T = 'foo' # ok l: L = ['foo', 'bar'] # Expected type 'List[Literal['foo', 'bar']]', got 'List[str]' inste
from typing import Literal, Dict, List
T = Literal['foo', 'bar']
L = List[T]
D = Dict[T, int]
q: T = 'foo' # ok
l: L = ['foo', 'bar'] # Expected type 'List[Literal['foo', 'bar']]', got 'List[str]' instead
d: D = {'foo': 1} # Expected type 'Dict[Literal['foo', 'bar'], int]', got 'Dict[str, int]' instead
如何在列表中或作为dict键正确使用文本类型?我认为您的示例程序类型检查与mypy中相同。例如,请参见。对于Pycharm,请看——这似乎是他们这边已知的一个bug。bug报告中的评论建议做一些类似于
l=cast(l,['foo','bar'])
的黑客行为作为解决方法。(如果您不使用mypy,只想询问pycharm中的类型提示,那么使用“python类型”或“类型提示”可能比使用“mypy”更好。)