PHpullh

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)으로 처리됩니다.