如何在Python中结合列表和联合创建自定义类型提示

问题描述 投票:0回答:2

例如,

def print_list(my_list: Union[List[int], List[str]]):
    ...

那么,

my_list
将是一个整数列表或字符串列表,但不是整数和字符串混合元素的列表。但我认为这太复杂了,所以我想创建一个新类型
UnionList
,如下所示:

UnionList = ...  # I don't know how to define this

def print_list(my_list: UnionList[int, str]):
    ...

我应该如何定义

UnionList
来表示与
Union[List[T1], List[T2], ...]
相同的类型?

python type-hinting mypy python-typing
2个回答
3
投票

使用

typing.TypeVar
typing.Union
创建通用别名(从 Python 3.10 开始为
|
):

from typing import TypeVar

T1 = TypeVar("T1")
T2 = TypeVar("T2")
UnionList = list[T1] | list[T2]


def print_list(my_list: UnionList[int, str]):
    ...

0
投票

我对这个主题没什么经验,但在我最近的项目中,我在 python3.10 中做到了这一点:

def print_list(my_list: list[str|int] ): 
    ...

我很高兴听到任何支持或反对的建议

© www.soinside.com 2019 - 2024. All rights reserved.