【发布时间】:2021-12-31 21:58:21
【问题描述】:
我有一个如下所示的 python 类:
class TestClass():
def __init__(self, input_data):
self.input_data = input_data #always 'a' or 'b'
def test(self) -> dict[int, Any]:
a = {'a': {1:0, 2:0}, 'b': {2:0, 3:'string'}}
return a[self.input_data]
运行 mypy 会导致错误消息 Incompatible return value type (got "object", expected "Dict[Any, Any]")。有没有办法解决这个问题?
一行 if 语句也有同样的问题,例如如果我根据条件返回不同的整数并将返回类型注释为 int,则会引发错误消息,指出返回“对象”类型。
【问题讨论】:
-
如果
input_data必须始终为"a"或"b",则应添加该键入信息。而dict[str, Any]不是test的正确返回类型,因为a[self.input_data]始终是一个字典,其键是int,而不是str。
标签: python type-hinting mypy