Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to define enums without values with Python?

Tags:

python

enums

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?

like image 437
Rolch2015 Avatar asked Oct 20 '19 09:10

Rolch2015


1 Answers

If you're using Python 3.6 or later, you can use enum.auto():

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.

like image 102
Greg Hewgill Avatar answered Oct 13 '22 04:10

Greg Hewgill