python - Mypy 未正确处理包含子类的字典参数
问题描述
我有以下示例代码
from typing import Any, Dict
class P:
pass
class C(P):
pass
class A:
def __init__(self, x: Dict[P, Any]):
pass
class B(A):
def __init__(self, x: Dict[C, Any]):
super().__init__(x)
在其上运行 mypy 时,会出现以下警告:
“A”的“ init ”的参数 1具有不兼容的类型“Dict[C, Any]”;预期“字典 [P,任何]”
为什么会这样?如果我也这样做,但不使用Dict[]
,即:
class P:
pass
class C(P):
pass
class A:
def __init__(self, x: P):
pass
class B(A):
def __init__(self, x: C):
super().__init__(x)
我没有抱怨。我尝试使用Mapping[]
而不是Dict[]
但出现相同的警告。我该如何处理?它是一个 Mypy 错误吗?我应该在 Github 页面中将其作为问题提及吗?这在代码中经常发生,因为我是从库类中继承的,我不能每次都使用强制转换,这会适得其反
解决方案
推荐阅读
- r - 学习对子集数据进行 R-Code 审查
- matlab - 为什么matlab中的tqwt函数会报错?
- python - 使用 Python 脚本删除 Raspberry Pi 上的文件 - 权限错误
- python - 即使我什至不访问此文件夹,为什么也会出现此错误?
- java - 无法将大量素数打印到控制台
- python - 输入为字典python列表
- r - cascadePanes = TRUE 的 searchPanes - 在 R 的数据表包中不起作用
- javascript - 运行时环境和编译器/解释器是否相同?
- javascript - React google maps 多边形顶点问题(只想突出显示该区域而不自动关闭路径)
- php - PG 终止后端