可以用Python定义没有值的枚举吗?

2024-04-26 14:02:58 发布

您现在位置:Python中文网/ 问答频道 /正文

Java和其他语言中enum的一个优点是,我不必关心特定的值(与常量/静态final成员相比)。例如,在Java中,我可以执行以下操作:

public enum Color {
    RED, BLUE;
}

据我所知,在python中,我必须执行以下操作:

class Color(Enum) {
    RED = "red" # or e.g 1
    BLUE = "blue" # or e.g. 2
}

如果我有一个包含数百个名称的枚举,那么这可能会变得相当麻烦,因为我必须始终跟踪是否已经为名称分配了值。有没有可能在不使用生成器之类的工具的情况下实现与Java相同的结果?你知道吗


Tags: or名称语言静态成员enumbluered
2条回答

一种方法是将枚举基类用作callable

Color = Enum('Color', 'RED BLUE GREEN ORANGE')

如果您使用的是Python3.6或更高版本,那么可以使用enum.auto()

from enum import Enum, auto

class Color(Enum):
    RED = auto()
    BLUE = auto()

^{}库的文档描述了这个特性和其他有用的特性,如@unique装饰器。你知道吗

相关问题 更多 >