【问题标题】:Is it possible to define enums without values with Python?是否可以使用 Python 定义没有值的枚举?
【发布时间】:2019-10-20 09:25:06
【问题描述】:

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

public enum Color {
    RED, BLUE;
}

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

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

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

【问题讨论】:

标签: python enums


【解决方案1】:

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

from enum import Enum, auto

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

enum 库的文档描述了此功能以及其他有用的功能,例如 @unique 装饰器。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 2018-01-21
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多