PYTHON Contents

Enums Intro (Safety and Readability)

Use enums to replace magic strings, enforce valid states, and improve readability and safety at system boundaries.

On this page

Why Enums

Enums prevent typos and invalid states, especially when values cross boundaries (config, APIs, storage).

Define an Enum

from enum import Enum

class Status(str, Enum):
    PENDING = "pending"
    OK = "ok"
    FAIL = "fail"

Use in Validation

def parse_status(value: str) -> Status:
    try:
        return Status(value)
    except ValueError as e:
        raise ValueError(f"invalid status: {value}") from e

Operational Checklist

  • Replace magic strings with enums for stable domains (status, role, type).
  • Convert external inputs at the boundary (parse/validate early).
  • Prefer string enums when values are serialized.

Failure Modes

  • Magic strings: typos create unreachable branches and silent bugs.
  • Late validation: invalid values spread before failing.