enum(열거형)은 「관련된 상수들을 한 클래스 안에 묶어 명명하는」 표준 라이브러리입니다.
"red", "green", "blue" 같은 매직 스트링이나 0, 1, 2 같은 매직 넘버 대신 의미 있는 이름으로 코드를 깔끔하게 만들어 줍니다.
기본 사용.
from enum import Enum.
class Color(Enum): RED = 1; GREEN = 2; BLUE = 3.
color = Color.RED.
color.name — "RED".
color.value — 1.
점 문법으로 의미 있는 상수를 안전하게 다룰 수 있습니다.
Enum의 장점.
1) 「자동 완성」 — 에디터가 가능한 값을 알려 줌.
2) 「오타 방지」 — 잘못된 이름은 IDE가 즉시 경고.
3) 「의미 있는 이름」 — Color.RED가 "red"보다 훨씬 명확.
4) 「불변성」 — 한 번 정의하면 바꿀 수 없음.
활용 예시.
def get_traffic_light(color: Color): if color is Color.RED: stop(); elif color is Color.GREEN: go().
함수 인자에 Enum을 쓰면 매개변수가 어떤 값을 받는지 자명해지고, 잘못된 문자열을 넘길 위험이 없어집니다.
더 풍부한 변형들.
IntEnum — 정수처럼 동작(연산 가능).
Flag — 비트 플래그(여러 값을 OR로 결합).
auto() — 값 자동 부여(Color.RED = auto()로 1, 2, 3 자동 할당).
Python 3.11+의 StrEnum — 문자열 비교가 자연스러운 변형.
한 줄 요약
enum은 관련 상수를 클래스로 묶어 매직 스트링·넘버를 의미 있는 이름으로 바꿉니다.
자동 완성·오타 방지·의미 명확성·불변성의 네 가지 장점이 있습니다.
더 알아볼 것
- IntEnum·Flag·StrEnum 변형
- auto()로 값 자동 부여
- Enum vs Literal["red", "green"]