Sne*_*nga 5 python type-hinting python-typing
我有两个清单。我想创建一个Literal使用这两个列表
category1 = ["image/jpeg", "image/png"]
category2 = ["application/pdf"]
SUPPORTED_TYPES = typing.Literal[category1 + category2]
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到这一点吗?
我已经看到问题了输入:Dynamically Create Literal Alias from List of Valid Values但这对我的用例不起作用,因为我不想mimetype成为类型typing.Tuple。
我将使用Literal在函数中使用 -
def process_file(filename: str, mimetype: SUPPORTED_TYPES)
Run Code Online (Sandbox Code Playgroud)
我尝试过的 -
supported_types_list = category1 + category2
SUPPORTED_TYPES = Literal[supported_types_list]
SUPPORTED_TYPES = Literal[*supported_types_list]
# this gives 2 different literals, rather i want only 1 literal
SUPPORTED_TYPES = Union[Literal["image/jpeg", "image/png"], Literal["application/pdf"]]
Run Code Online (Sandbox Code Playgroud)
使用与您链接的问题相同的技术:从文字类型构建列表,而不是相反:
SUPPORTED_IMAGE_TYPES = typing.Literal["image/jpeg", "image/png"]
SUPPORTED_OTHER_TYPES = typing.Literal["application/pdf"]
SUPPORTED_TYPES = typing.Literal[SUPPORTED_IMAGE_TYPES, SUPPORTED_OTHER_TYPES]
category1 = list(typing.get_args(SUPPORTED_IMAGE_TYPES))
category2 = list(typing.get_args(SUPPORTED_OTHER_TYPES))
Run Code Online (Sandbox Code Playgroud)
其他答案中尚未涵盖的唯一部分是SUPPORTED_TYPES = typing.Literal[SUPPORTED_IMAGE_TYPES, SUPPORTED_OTHER_TYPES],是的,您可以做到这一点。它相当于你原来的定义SUPPORTED_TYPES。
| 归档时间: |
|
| 查看次数: |
4204 次 |
| 最近记录: |