tor*_*gen 25 python typing python-3.x
是否有一个Python类型提示匹配列表,元组和可能的其他顺序类型,但不匹配字符串?
问题是字符串同时是长度为1的字符串序列(例如单个字符),因此它们在技术上匹配Sequence[str],但是为期望字符串列表的函数提供字符串可能是100%的错误.
有没有办法从类型注释中排除字符串,使其类似于不存在And[Sequence[str], Not[str]]?
至于目的,我想注释这个功能:
PathType = Union[str, os.PathLike]
def escape_cmdline(argv: Union[List[PathType], Tuple[PathType]]) -> str: ...
Run Code Online (Sandbox Code Playgroud)
但是现有的签名看起来很臃肿,并没有涵盖列表和元组兼容的任何自定义类型.有没有更好的方法?
显然,这对于类型提示是不可能的。PEP 484 无法区分Sequence[str],Iterable[str]而str根据 Guido van Rossum 的说法。
来源:https : //github.com/python/mypy/issues/1965和https://github.com/python/typing/issues/256