You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现自定义参数类型提示SingleOrSequence简化类型声明

实现方案

原生泛型别名实现(最Pythonic,推荐)

typing模块原生支持该场景,不需要自定义类,直接使用泛型类型别名即可实现需求,不同Python版本写法如下:

Python 3.12+(PEP 695 泛型别名语法)

from collections.abc import Sequence

type SingleOrSequence[T] = T | Sequence[T]

Python 3.10 ~ 3.11

from collections.abc import Sequence
from typing import TypeVar

T = TypeVar("T")
SingleOrSequence = T | Sequence[T]

Python 3.9及更低版本

from collections.abc import Sequence
from typing import TypeVar, Union

T = TypeVar("T")
SingleOrSequence = Union[T, Sequence[T]]

以上所有写法均可直接按照你期望的方式调用,主流静态类型检查器(mypy、pyright等)均可正确识别:

my_dicts: SingleOrSequence[dict[str, int]]
# 等价于 my_dicts: Union[dict[str, int], Sequence[dict[str, int]]]

你之前自定义类的实现虽然运行时可以正常工作,但大部分静态类型检查器无法正确解析其返回的类型,不推荐生产环境使用。

可选调整

如果希望接受的序列仅包含可变序列(如list,排除tuple、str等不可变序列),将代码中的Sequence替换为MutableSequence即可。

内容的提问来源于stack exchange,提问作者RxHEAD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:30:03