Pycharm mypy是否可以检测坏类型Ddict返回类型?
我正试图让mypy为我的项目全面地工作Pycharm mypy是否可以检测坏类型Ddict返回类型?,pycharm,static-analysis,mypy,python-3.8,Pycharm,Static Analysis,Mypy,Python 3.8,我正试图让mypy为我的项目全面地工作 from typing import TypedDict OurDict = TypedDict('OurDict', {'x': int}) bad: OurDict = {'y': 2} # mypy successfully marks wrong good: OurDict = {'x': 2} # mypy likes this def get_bad() -> OurDict: return 234 # mypy s
from typing import TypedDict
OurDict = TypedDict('OurDict', {'x': int})
bad: OurDict = {'y': 2} # mypy successfully marks wrong
good: OurDict = {'x': 2} # mypy likes this
def get_bad() -> OurDict:
return 234 # mypy successfully marks wrong
def get_good() -> OurDict:
res = {'x': 2}
return res # mypy successfully marks correct
def get_should_be_bad() -> OurDict:
return {'hello': 2, 'world': 1} # mypy fails to see a problem
mypy似乎可以在内联声明时检测字典是否符合类型定义,但在检查函数返回值时,它只检查返回值是否是某种字典,而不是所需的类型。这只是设计中的一个限制,还是我做错了什么?事实证明,mypy检测到这一点没有问题,但我错误地认为在venv中键入调用mypy会在venv中使用mypy。我必须键入python3-m mypy才能运行正确的可执行文件。事实证明,mypy检测到这一点没有问题,但我错误地认为从venv中键入调用mypy会在venv中使用mypy。我必须键入python3-m mypy才能运行正确的可执行文件。使用python3.8和
mypy==0.761
,我得到了错误:在get>的主体中,TypedDict“OurDict”
的额外键('hello',world')。谢谢,这是一个版本控制问题。我在Python3.8VenV中运行mypy,我假设它会在venv中使用mypy,但结果证明它使用的是系统mypy。当我输入python-mypy时,它工作正常。我应该删除这篇文章吗?使用Python 3.8和mypy==0.761
,我得到错误:在get\u应该是bad
的主体中,TypedDict“OurDict”的额外键('hello','world')。谢谢,这是一个版本控制问题。我在Python3.8VenV中运行mypy,我假设它会在venv中使用mypy,但结果证明它使用的是系统mypy。当我输入python-mypy时,它工作正常。我应该删除这个帖子吗?