python - 元组的类型提示,如果参数的数量可以是 2 或 3
问题描述
我想问一下,在我的情况下,如何正确编写 * args变量的类型提示。
我有这个方法:
def insert(self, *args) -> None:
* args格式为Union[Tuple[My_Class, str, ?], Iterable[Tuple[My_class, str, ?]]],其中第三个参数可能是也可能不是必须给出。它标有问号。
我用这个语句调用这个方法:
form.insert(
(first_field, "John", "Doe"),
(date_field, "12251996"),
)
总之 * args可以是 Tuple,里面有 2 或 3 个值,其中第三个参数是 str,或者没有给这个方法
,或者它可以是 Tuple 的 Iterable,其中 Tuple 具有与前一种情况相同的值。
A 尝试了这些类型提示,但它没有给我我需要的东西。
Union[Tuple[My_Class, str, Optional[str]], Iterable[Tuple[My_class, str, Optional[str]]]]
Union[Tuple[My_Class, str, ...], Iterable[Tuple[My_class, str, ...]]]
Union[Tuple[My_Class, str, Union[str, ...]], Iterable[Tuple[My_class, str, Union[str, ...]]]]
有没有人有任何想法,请问如何解决这个问题?
解决方案
将这两个版本添加到您的Union
def insert(self, *args: Union[
Tuple[X, str, str],
Tuple[X, str],
Iterable[Union[Tuple[X, str, str], Tuple[X, str]]]
]) -> None:
尽管该类型别名的大小表明该方法做得太多
推荐阅读
- javascript - 使用 Document.querySelector 从 p 获取文本,不包括跨度值
- linux - Python3.7用pip3安装http不起作用
- java - 如何从两个映射中删除相同的键
- c# - 如何在不指定页面变量的情况下覆盖我的自定义按钮事件
- c++ - 如何在 C++ 中将新数据附加到文本文件而不再次输出标题?
- forms - Asp.net 核心将复选框数据从视图发布到控制器
- java - 如何跨模块重用pom元素
- authentication - Authentication grant code 的响应是 200 Ok。但没有得到代码
- docusignapi - DocuSign:建立路由顺序时的模板标志位置问题
- sql - 先进先出汇总表