简化枚举的方法?

Dav*_*542 5 python enums python-3.x

有没有更好的方法来初始化所有这些样板?

class Type(Enum):
    Null=auto()
    Bool=auto()
    Int=auto()
    Float=auto()
    Decimal=auto()
    String=auto()
    Bytes=auto()
    Date=auto()
    Time=auto()
    Datetime=auto()
    Timestamp=auto()
    Interval=auto()
    Struct=auto()
    Array=auto()
    Json=auto()
Run Code Online (Sandbox Code Playgroud)

我想做类似以下的事情,但不幸的是它有点搞砸了 Pylance 的工作方式(所有内容都显示为引用相关类型的错误):

_Types = ['Null','Bool','Int','Float','Decimal','String','Bytes','Date','Time','Datetime','Timestamp','Interval','Struct','Array','Json']
Type = Enum('Type', {v:i for i,v in enumerate(_Types)})
Run Code Online (Sandbox Code Playgroud)

Sil*_*olo 4

我不能代表 Pylance,但如果您想要auto实现,您可以将类型列表直接传递给函数Enum

Type = Enum('Type', ['Null','Bool','Int','Float','Decimal','String','Bytes',
                     'Date','Time','Datetime','Timestamp','Interval','Struct',
                     'Array','Json'])
Run Code Online (Sandbox Code Playgroud)