枚举或相关类型来键入提示不同的字符串文字组合

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

我有一个名为

price_type
的函数参数,仅允许使用
A
(卖价)、
B
(出价)、
M
(中价)或它们的任意组合的参数,例如:
AB
ABM
。排列方式也无关紧要,因此
AB
BA
一样有可能被输入,并且它们都是有效的。

def __get_base_data(
    symbol: str,
    count: int,
    price_type: str, 
):

如何输入

price_type
的提示,这样我就不必显式命名每个可能的选项?做类似的事情

Literal["A", "B", "M", "AB", "BA", "AM" ....]

我觉得有点可笑。有更好的方法吗?

python python-typing literals
1个回答
0
投票

也许将

price_type
映射到
str
在您的情况下并不理想,可能的解决方案是创建一个枚举
PaymentType
并将
price_type
映射到它。由于您可以分配多个
PaymentType
,您还可以期望收到一组
PaymentType
属性。

from enum import Enum
from typing import Tuple

def __get_base_data(
    symbol: str,
    count: int,
    price_types: Tuple[PriceType, ...], 
):

class PriceType(Enum):
    A = 1
    B = 2
    M = 3
© www.soinside.com 2019 - 2024. All rights reserved.