是否可以使用 Python 定义没有值的枚举?

Rol*_*015 9 python enums

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

public enum Color {
    RED, BLUE;
}
Run Code Online (Sandbox Code Playgroud)

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

public enum Color {
    RED, BLUE;
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个包含数百个名字的枚举,那么这会变得非常麻烦,因为我总是必须跟踪一个值是否已经分配给一个名字。是否有可能在不求助于生成器等的情况下实现与 Java 相同的结果?

Dan*_*man 11

一种方法是使用 Enum 基类作为callable

Color = Enum('Color', 'RED BLUE GREEN ORANGE')
Run Code Online (Sandbox Code Playgroud)

  • 这种方法有缺点吗? (2认同)

Gre*_*ill 10

如果您使用的是 Python 3.6 或更高版本,则可以使用enum.auto()

from enum import Enum, auto

class Color(Enum):
    RED = auto()
    BLUE = auto()
Run Code Online (Sandbox Code Playgroud)

enum库的文档描述了这个和其他有用的特性,比如@unique装饰器。

  • 哇,它可以自动计数。他们使用人工智能了吗? (4认同)