본문 바로가기
코딩취미/Python

파이썬 Enum 클래스 완벽 정리 – 왜, 어떻게 써야 할까?

by 브링블링 2025. 4. 10.
반응형

파이썬 Enum 클래스 완벽 정리 – 왜, 어떻게 써야 할까?

파이썬을 쓰다 보면 고정된 값들을 의미 있게 관리하고 싶을 때가 있어요. 이런 경우 Enum 클래스를 활용하면 코드의 가독성, 안정성, 유지보수성을 크게 높일 수 있습니다. 이번 포스트에서는 Enum 클래스의 필요성과 사용법, Enum vs enum.Enum의 차이까지 예제와 함께 자세히 소개해드릴게요!


📌 1. Enum이란 무엇인가요?

Enum은 열거형을 정의할 수 있는 클래스입니다. 쉽게 말해, 관련된 고정값들을 그룹화하여 의미 있는 이름을 부여하는 방식이에요.

❓ 왜 Enum을 써야 하나요?

이유 설명
가독성 향상 숫자/문자열 대신 이름으로 의도 표현
타입 안정성 유효하지 않은 값 사용 방지
하드코딩 방지 매직 넘버/문자열 제거
자동 완성 지원 IDE 도움으로 코딩 생산성 향상

🛠️ 2. Enum 클래스 정의하는 방법

가장 기본적인 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

# 비교
if Color.RED == Color.GREEN:
    print("같다")
else:
    print("다르다")  # 다르다 출력

🔄 3. 값을 자동으로 할당하고 싶다면? auto()

from enum import Enum, auto

class Status(Enum):
    READY = auto()
    RUNNING = auto()
    DONE = auto()

print(Status.READY)      # Status.READY
print(Status.READY.value)  # 1
 

auto()를 쓰면 값이 자동으로 증가되면서 지정돼요. 값 자체가 중요하지 않을 때 유용합니다.

반응형

🧠 4. class Color(Enum) vs class Color(enum.Enum) 차이

두 가지 방법은 기능적으로 동일하지만, 작성 방식에서 약간의 차이가 있습니다.

방법 1: 간결한 스타일

from enum import Enum

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

방법 2: 명확한 스타일

import enum

class Color(enum.Enum):
    RED = 1
    GREEN = 2
항목 Enum (간결) enum.Enum (명확)
모듈 임포트 직접 가져옴 (from) 전체 모듈 임포트 (import)
장점 짧고 간결함 어디서 왔는지 명확함
추천 상황 짧은 코드, 스크립트 다양한 enum 기능을 함께 쓸 때

결론: 두 방식 모두 OK. 팀 규칙이나 코드 스타일에 따라 선택하면 됩니다!


🎯 5. 실전에서 Enum이 유용한 예

  • 상태 코드 (e.g., Status: READY, RUNNING, DONE)
  • 방향 정의 (e.g., Direction: NORTH, SOUTH)
  • 권한 레벨 (e.g., Role: ADMIN, USER)
  • 설정 모드 (e.g., Mode: AUTO, MANUAL)
class Mode(Enum):
    AUTO = "auto"
    MANUAL = "manual"

✅ 마무리 요약

  • Enum은 관련된 상수 값들을 그룹화하는 데 탁월한 도구
  • 가독성 + 안정성 + 유지보수성 향상
  • from enum import Enum vs import enum 은 스타일 차이일 뿐 기능은 동일
  • auto()를 활용하면 자동 값 할당 가능
반응형