Python Enums: Defining and Using Enumerations with the Enum Class
Discover how to use the Enum
class in Python to create enumerations, assigning fixed constant values to a set of identifiers. Learn how to define enumerations, access their members, and use attributes like name
and value
to manage and utilize enumeration values effectively in your Python programs.
Python - Enums
In Python, enumeration assigns fixed constant values to a set of strings. The Enum
class from the enum
module is used to define an enumeration of identifiers, conventionally written in uppercase.
Example
Below, "subjects" is the enumeration with different enumeration members. Each member is an object of the enumeration class subjects
, with name
and value
attributes.
# importing enum
from enum import Enum
class subjects(Enum):
ENGLISH = 1
MATHS = 2
SCIENCE = 3
SANSKRIT = 4
obj = subjects.MATHS
print (type(obj))
Output
An enum class cannot have the same member appearing twice, but multiple members can have the same value. To ensure unique values, use the @unique
decorator.
Example with @unique
Using the @unique
decorator to restrict duplicate values:
from enum import Enum, unique
@unique
class subjects(Enum):
ENGLISH = 1
MATHS = 2
GEOGRAPHY = 3
SANSKRIT = 2
Output
@unique
^^^^^^
raise ValueError('duplicate values found in %r: %s' %
ValueError: duplicate values found in : SANSKRIT -> MATHS
The Enum
class is callable, allowing enumeration creation via its constructor:
Alternative Method
Another way to define an enumeration:
from enum import Enum
subjects = Enum("subjects", "ENGLISH MATHS SCIENCE SANSKRIT")
print(subjects.ENGLISH)
print(subjects.MATHS)
print(subjects.SCIENCE)
print(subjects.SANSKRIT)
Output
subjects.ENGLISH
subjects.MATHS
subjects.SCIENCE
subjects.SANSKRIT
Accessing Enums
Enum members can be accessed by their value or name:
from enum import Enum
class subjects(Enum):
ENGLISH = "E"
MATHS = "M"
GEOGRAPHY = "G"
SANSKRIT = "S"
obj = subjects.SANSKRIT
print(type(obj))
print(obj.name)
print(obj.value)
Output
SANSKRIT
S
Iterating through Enums
Enumerations can be iterated through using a for
loop:
from enum import Enum
class subjects(Enum):
ENGLISH = "E"
MATHS = "M"
GEOGRAPHY = "G"
SANSKRIT = "S"
for sub in subjects:
print(sub.name, sub.value)
Output
ENGLISH E
MATHS M
GEOGRAPHY G
SANSKRIT S
Enum members can be accessed by their unique value or name attribute:
print(subjects("E"))
print(subjects["ENGLISH"])