我不认为mypy可以区分Iterable和Hashable,因为Iterable也是可以理解的。有办法区分这两个人吗?
@overload
def contains(o: Hashable) -> bool:...
@overload
def contains(o: Iterable[Hashable]) -> List[bool]:...但是mypy说重载2的“包含”不会被使用,因为它的参数重叠重载1。
发布于 2022-01-07 12:39:09
更改overload def的顺序
@overload
def contains(o: Iterable[Hashable]) -> List[bool]:...
@overload
def contains(o: Hashable) -> bool:...
def contains(o):
pass
x = contains(2)
reveal_type(x) # Mypy: Revealed type is "builtins.bool"
y = contains([3, 4])
reveal_type(y) # Mypy: Revealed type is "builtins.list[builtins.bool]"https://stackoverflow.com/questions/70618480
复制相似问题