← Back to Python

All Topics

Advertisement

Learn/Python/Python Advanced

Enum Types - Enumeration Classes

Topic: Data Types

Advertisement

Introduction

The enum module provides support for creating enumerations - a set of symbolic names bound to unique, constant values. Enums improve code readability and prevent magic numbers.

Basic Enum

from enum import Enum

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

print(Color.RED)           # Color.RED
print(Color.RED.name)     # RED
print(Color.RED.value)    # 1

for color in Color:
    print(color)

IntEnum

from enum import IntEnum

class Status(IntEnum):
    PENDING = 0
    SUCCESS = 1
    FAILED = 2

# Can use as integers
if Status.SUCCESS == 1:
    print("Success!")

result = Status(1)
print(result)  # Status.SUCCESS

Enum with auto()

from enum import Enum, auto

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

print([d.value for d in Direction])  # [1, 2, 3, 4]

Flag for Bit Masks

from enum import Flag, auto

class Permissions(Flag):
    READ = auto()
    WRITE = auto()
    EXECUTE = auto()

read_write = Permissions.READ | Permissions.WWRITE
print(read_write)              # Permissions.READ|WRITE
print(Permissions.READ in read_write)  # True

Enum Methods

from enum import Enum

class Priority(Enum):
    LOW = 1
    MEDIUM = 2
    HIGH = 3
    CRITICAL = 4
    
    @property
    def is_urgent(self):
        return self.value >= Priority.HIGH.value
    
    @classmethod
    def from_value(cls, value):
        return cls(value)

print(Priority.HIGH.is_urgent)  # True
print(Priority.from_value(2))   # Priority.MEDIUM

Practice Problems

  1. Create an enum for days of the week
  2. Use IntEnum for HTTP status codes
  3. Implement Flag for file permissions
  4. Add methods to enum classes
  5. Create enum with custom string values

Advertisement

Advertisement

Need More Practice?

Get personalized Python help from ChatWhole's AI-powered platform.

Get Expert Help →