小编veg*_*rab的帖子

如何注释我的子类以避免 mypy 错误:类无法子类“Foo”(具有类型“Any”)

我有一个通用库,它定义了我在所有其他包中使用的lib_common基本 pydantic :BaseModel

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib_common\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n
Run Code Online (Sandbox Code Playgroud)\n

其中models.py包含:

\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib_common\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 __init__.py\n \xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 models.py\n
Run Code Online (Sandbox Code Playgroud)\n

每当我尝试将其导入其他包并继承StrictBaseModel以定义 pydantic 模型时,我都会得到\nerror: Class cannot subclass "StrictBaseModel" (has type "Any")

\n
from pydantic import BaseModel, Extra\n\nclass StrictBaseModel(BaseModel):\n   class Config:\n        extra = Extra.forbid\n
Run Code Online (Sandbox Code Playgroud)\n

我还没有找到一个很好的答案来解释这到底意味着什么。我需要添加哪些提示才能不收到此警告?我不想只是用 a 将其静音# type: ignore或更改我的 mypy 设置。\n这对我来说真的很奇怪,这个错误只发生因为lib_common我的其他包依赖于一个单独的 python 包。

\n

我已经看过很多关于此问题的帖子,其中有很好的答案,如下所示:mypy调用错误:类无法在石墨烯上子类“ObjectType”(具有类型“Any”),该文件表示为要导入的包构建存根文件。但这些都是专门使用外部库的。但是,我可以选择仅正确键入提示我导入/继承的类。

\n

我该如何解决这个问题?谢谢

\n

python mypy python-typing

9
推荐指数
1
解决办法
2220
查看次数

标签 统计

mypy ×1

python ×1

python-typing ×1