PYTHON · 객체지향
열거형 심화
Enum의 고급 기능: 메서드 추가, Flag, 커스텀 값, 멤버 검증 등을 다룹니다.
객체지향고급EnumFlag열거형unique비트 연산
핵심 설명
Enum의 고급 기능: 메서드 추가, Flag, 커스텀 값, 멤버 검증 등을 다룹니다.
Python code
from enum import Enum, Flag, auto, unique
@unique # 중복 값 금지
class Status(Enum):
PENDING = "pending"
ACTIVE = "active"
INACTIVE = "inactive"
@classmethod
def from_string(cls, s: str) -> "Status":
try:
return cls(s.lower())
except ValueError:
return cls.PENDING
def is_active(self) -> bool:
return self == Status.ACTIVE
# Flag: 비트 연산 가능
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
ADMIN = READ | WRITE | EXECUTE
# 권한 조합
user_perm = Permission.READ | Permission.WRITE
print(user_perm) # Permission.READ|WRITE
print(Permission.READ in user_perm) # True
print(Permission.EXECUTE in user_perm) # False
# Status 사용
s = Status.from_string("active")
print(f"{s.name}: active={s.is_active()}")
for status in Status:
print(f" {status.value}")학습 팁
Flag는 비트 연산으로 권한이나 옵션을 조합할 때 유용합니다.
주의할 점
@unique를 사용하지 않으면 같은 값을 가진 여러 멤버가 별칭(alias)으로 처리됩니다.
자주 묻는 질문
열거형 심화란 무엇인가요?
Enum 의 고급 기능: 메서드 추가, Flag, 커스텀 값, 멤버 검증 등을 다룹니다.
열거형 심화 학습 시 주의할 점은 무엇인가요?
@unique 를 사용하지 않으면 같은 값을 가진 여러 멤버가 별칭(alias)으로 처리됩니다.
Continue Learning
Python 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.