在升级我正在使用的 mypy 版本后,今天我的一些代码中开始出现类型警告。关于这个主题的文献似乎不多,所以希望有人能帮助我!
我有一个元类定义如下...
from __future__ import annotations
class MyMetaClass(type):
def __new__(mcs,
name: str,
bases: Tuple[type, ...],
namespace: Dict[str, Any],
) -> MyMetaClass:
# Custom code... doesnt matter
# ...
# ...
return type.__new__(mcs, name, bases, namespace)
今天,mypy 开始吐出以下错误...
error: Incompatible return value type (got "type", expected "MyMetaClass")
我尝试了以下返回语句的迭代,但都没有成功......
return super().__new__(mcs, name, bases, namespace)
return super(MyMetaClass, mcs).__new__(mcs, name, bases, namespace)
关于如何绕过此警告有什么建议吗?我最终决定选一个演员……但感觉必须有更好的东西。
return cast(MyMetaClass, super().__new__(mcs, name, bases, namespace))
问题是你没有注释
mcs
参数,所以无法知道super().__new__
会返回什么类型。