【发布时间】:2021-08-16 00:23:08
【问题描述】:
我正在尝试向文件系统相关库添加类型提示,其中许多函数采用str 或bytes 类型的路径。我可以通过使用重载来处理我自己的函数,但是我正在努力处理简单的操作或标准库函数,这些函数在内部使用任何一种类型的参数调用。这是一个简化的例子:
@overload
def join_paths(s1: str, s2: str) -> str: ...
@overload
def join_paths(s1: bytes, s2: bytes) -> bytes: ...
def join_paths(s1: Union[str, bytes],
s2: Union[str, bytes]) -> Union[str, bytes]:
return s1 + s2
如果我想从其他地方调用此函数,重载工作正常,但我的问题在于 s1 + s2 语句,这导致 mypy 发出警告:
example.py:74: error: Unsupported operand types for + ("str" and "bytes") [operator]
example.py:74: error: Unsupported operand types for + ("bytes" and "str") [operator]
我想表达的是,要么两个操作数都是str 类型,要么都是bytes 类型,类似于使用重载对我自己的函数所做的。
我没有太多的打字经验,所以我可能会错过明显的解决方案,但到目前为止我还没有找到如何调整它以避免出现警告。
【问题讨论】:
-
查看link
-
谢谢,@gowridev!
标签: python python-typing