Python — From Basics to Advanced · Dataclasses and Enums
Enum, IntEnum, StrEnum, Flag — Enumerations
Dataclasses and Enums
Introduction
Enum (the enum module, since 3.4) provides named constants with guaranteed uniqueness and identity. It replaces "magic strings": instead of if status == "PENDING" you write if status is Status.PENDING. Benefits: IDE autocompletion, type checkers catch typos, iteration over values, readable __repr__. Variants: Enum (arbitrary value), IntEnum (int + Enum, usable wherever int is expected), StrEnum (3.11+, str + Enum), Flag and IntFlag (bitwise combinations — Permissions.READ | Permissions.WRITE). The auto() helper assigns increasing values. The @unique decorator forbids aliases. Iteration: for s in Status: print(s).