How to Use Enum in Python Correctly With Clear Examples

 

 What is Enum in Python?

Enum (short for Enumeration) is a class in Python’s enum module that lets you define a set of named constant values. It's commonly used to make your code more readable, maintainable, and type-safe.

 Why Use Enum?

  • Avoids magic numbers or hardcoded strings
  • Provides human-readable names for values
  • Useful for state machines, choices, options, etc.

 Step 1: Import Enum Module

from enum import Enum

 Step 2: Define an Enum Class

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

 Example Usage

favorite_color = Color.RED

if favorite_color == Color.RED:
    print("You chose red.")

Output:

You chose red.

 Accessing Enum Members

print(Color.GREEN)        # Output: Color.GREEN
print(Color.GREEN.name)   # Output: GREEN
print(Color.GREEN.value)  # Output: 2

 Looping Through Enum

for color in Color:
    print(color.name, color.value)

 Comparing Enums

if Color.RED == Color.RED:  #  True
    print("Same color")

if Color.RED == 1:  #  False – can't compare Enum directly to int
    print("Wrong comparison")

 Use .value to compare:

if Color.RED.value == 1:
    print("Correct comparison")

 Don’t Do This

Avoid defining enum values with duplicate names or values unless necessary. By default, Python doesn’t allow duplicate names:

class Status(Enum):
    ACTIVE = 1
    INACTIVE = 1  #  Will raise an error

 If you need aliases:

class Status(Enum):
    ACTIVE = 1
    ENABLED = 1  #  With `@unique` removed, this becomes an alias

 Use @unique to Enforce Unique Values

from enum import Enum, unique

@unique
class Status(Enum):
    ACTIVE = 1
    INACTIVE = 2

 Advanced: Auto Values

from enum import Enum, auto

class Direction(Enum):
    NORTH = auto()
    SOUTH = auto()
    EAST = auto()
    WEST = auto()

 Summary Table

Feature Syntax/Example
Import Enum from enum import Enum
Define Enum class Color(Enum): ...
Access name/value Color.RED.name, .value
Compare Enums Color.RED == Color.RED
Loop through members for color in Color:
Enforce uniqueness Use @unique decorator
Auto-generate values Use auto() from enum module

0 Comments:

Post a Comment