如何一次性将 Python 枚举公开为“常量”而无需类名

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

以下代码创建了三个“常量”,可以在每个常量之前不使用枚举的类名来使用这些常量。有没有一种方法可以对枚举的所有成员执行此操作,而无需为每个成员添加显式代码行,如此处所示?

import enum

class Test(enum.Enum):
    ONE = 1
    TWO = 2
    THREE = 3

ONE = Test.ONE
TWO = Test.TWO
THREE = Test.THREE

基本上,对于同时拥有 20-30 名成员的枚举,是否有一种有效的方法?

python python-3.x enums constants
1个回答
2
投票

我不建议这样做,因为枚举的名称表明了归属。例如,从以下代码中可以直观地看出,一月工作月

class WorkingMonth(enum.Enum):
    JANUARY = "january"
    FEBRUARY = "february"
    ...

# WorkingMonth.JANUARY

在这种情况下,省略符号是没有意义的。此外,如果您有名称不同但值交叉的枚举,这会增加潜在错误的可能性:

class ServerFormats(enum.Enum):
    MP3 = "mp3"
    WAV = "wav"


class ClientFormats(enum.Enum):
    MP3 = "mp3"
    FLAC = "flac"

# ServerFormats.MP3 and ClientFormats.MP3 will conflict

总而言之,我想说这是相当糟糕的做法。

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