Is It Possible To Define Enums Without Values With Python?

- 1 answer

One advantage of enums in Java and other languages is that I do not have to care about specific values (in contrast to constants/static final members). For example, in Java I can do the following:

public enum Color {
    RED, BLUE;

At least to my knowledge, in python I have to do the following:

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

If I have an enum with hundreds of names, then this can get quite cumbersome, because I always have to keep track whether a value was already assigned to a name or not. Is it maybe possible to achieve the same result as in Java without resorting to generators or the like?



If you're using Python 3.6 or later, you can use

from enum import Enum, auto

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

The documentation for the enum library describes this and other useful features like the @unique decorator.