Python mypy don type check dataclass



mypy与类型提示完美配合,但当我使用数据类作为返回类型时,它不检查类型

我的命令:python -m pipenv run mypy .

@dataclass
class HttpMessageModel:
message: str
code: int
def http_message(message: str) -> HttpMessageModel:
return {
"message": message,
"code": "200", # --> should fail since we have a int
}

完整示例:https://github.com/TheSmartMonkey/create-python-app

如果我把你的代码放在一个文件中:

from dataclasses import dataclass
@dataclass
class HttpMessageModel:
message: str
code: int
def http_message(message: str) -> HttpMessageModel:
return {
"message": message,
"code": "200", # --> should fail since we have a int
}

并运行mypy,我确实得到了预期的错误:

C:testpython>mypy test.py
test.py:9: error: Incompatible return value type (got "Dict[str, str]", expected "HttpMessageModel")

检查实际项目的问题可能在于如何设置目录结构。查看https://mypy.readthedocs.io/en/latest/running_mypy.html#mapping-file-paths-to-modules并尝试在包目录的根目录中添加__init__.py文件或将namespace_packages = True添加到您的mypy配置中。

注意,要返回HttpMessageModel而不是dict,函数应该这样做:

def http_message(message: str) -> HttpMessageModel:
return HttpMessageModel(message, 200)

最新更新