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)
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装饰器。
| 归档时间: |
|
| 查看次数: |
2834 次 |
| 最近记录: |