0

这听起来可能不合理,但现在我需要否定类型注释。我的意思是这样的

an_int : Not[Iterable]
a_string: Iterable

这是因为我为一个函数编写了一个重载,而 mypy 不理解我。我的功能看起来像这样......

@overload
def iterable(o: Iterable) -> Literal[True] : ...

@overload
def iterable(o: Any) -> Literal[False] : ...


def iterable(o: Iterable|Any) -> Literal[True, False] :
    return isinstance(o, Iterable)

但 mypy 抱怨重载 1 与重载 2 重叠并返回不兼容的类型。

Not[Iterable]否定类型注释可以通过使用而不是Any重载 2轻松解决此问题。

有谁知道如何解决这个问题?

4

0 回答 0