파이썬에서 열거형(Enumeration) 또는 줄여서 열거형은 명명된 상수들의 집합을 정의하는 클래스이다. 열거형을 사용하면 코드의 가독성과 유지보수성을 높일 수 있으며, 의미 있는 이름을 통해 값들을 그룹화할 수 있다. 파이썬에서는 enum
모듈을 사용하여 열거형을 정의할 수 있다.
enum
모듈
enum
모듈은 열거형을 정의하기 위해 제공되며, Enum
클래스를 사용하여 열거형을 정의할 수 있다.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
위 예제에서 Color
는 Enum
클래스를 상속받아 정의된 열거형이다. RED
, GREEN
, BLUE
는 열거형의 멤버이며, 각각 1
, 2
, 3
의 값을 가진다.
열거형의 멤버 접근
열거형의 멤버는 점 표기법을 사용하여 접근할 수 있다.
print(Color.RED) # Color.RED 출력
print(Color.GREEN) # Color.GREEN 출력
print(Color.BLUE) # Color.BLUE 출력
print(Color.RED.name) # RED 출력
print(Color.RED.value) # 1 출력
Color.RED
: 열거형 멤버 자체를 나타낸다.Color.RED.name
: 열거형 멤버의 이름을 문자열로 반환한다.Color.RED.value
: 열거형 멤버의 값을 반환한다.
열거형의 이터레이션
열거형은 이터러블(iterable)이다. 이를 통해 열거형의 모든 멤버를 반복(iterate)할 수 있다.
for color in Color:
print(color)
위 코드는 Color
열거형의 모든 멤버를 순회하며 각각을 출력한다.
열거형의 비교
열거형 멤버는 동일한 열거형 내에서 비교할 수 있다.
print(Color.RED == Color.RED) # True 출력
print(Color.RED == Color.BLUE) # False 출력
print(Color.RED is Color.RED) # True 출력
print(Color.RED is Color.BLUE) # False 출력
열거형의 활용
열거형은 코드에서 의미 있는 상수 값을 정의할 때 유용하다. 예를 들어, 상태 코드, 방향, 옵션 등을 정의하는 데 사용할 수 있다.
from enum import Enum, auto
class Status(Enum):
NEW = auto()
IN_PROGRESS = auto()
COMPLETED = auto()
FAILED = auto()
# 상태 확인
print(Status.NEW) # Status.NEW 출력
print(Status.IN_PROGRESS) # Status.IN_PROGRESS 출력
# 열거형의 이름과 값
print(Status.NEW.name) # NEW 출력
print(Status.NEW.value) # 1 출력
# 상태 비교
current_status = Status.IN_PROGRESS
if current_status == Status.IN_PROGRESS:
print("현재 작업이 진행 중입니다.")
위 예제에서 Status
열거형은 작업의 상태를 나타내며, auto()
를 사용하여 자동으로 값을 할당한다. 이는 값이 중요한 것이 아니라 상태를 의미 있는 이름으로 구분하는 것이 중요할 때 유용하다.
열거형 멤버의 속성과 메서드
열거형 멤버는 다양한 속성과 메서드를 제공한다.
name
: 열거형 멤버의 이름을 반환한다.value
: 열거형 멤버의 값을 반환한다.__members__
: 열거형의 모든 멤버를 사전(dictionary) 형태로 반환한다.
# 모든 멤버 확인
print(Status.__members__) # {'NEW': <Status.NEW: 1>, 'IN_PROGRESS': <Status.IN_PROGRESS: 2>, 'COMPLETED': <Status.COMPLETED: 3>, 'FAILED': <Status.FAILED: 4>} 출력