这听起来可能不合理,但现在我需要否定类型注释。我的意思是这样的
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轻松解决此问题。
有谁知道如何解决这个问题?