반응형
파이썬 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()를 활용하면 자동 값 할당 가능
반응형
'코딩취미 > Python' 카테고리의 다른 글
Python으로 프로세스 ID(PID) 관리 및 상태 확인하기 (0) | 2025.04.25 |
---|---|
PySide6 프로그램 종료 시 반드시 호출되는 함수는 있을까? (0) | 2025.04.21 |
파이썬으로 실무형 로그 시스템 구축하기 – 로그 레벨 분리 + 자동 파일 분할까지 (0) | 2025.04.07 |
PySide6와 pprint: 순환 참조와 재귀 에러 문제 해결하기 (0) | 2025.03.22 |
PySide6에서 QTableWidget UI 커스터마이징: 컬럼 숨기기, 셀 색상 변경, 팝업 기능 추가 (0) | 2025.03.21 |