Python에서 Enum을 사용하다 보면 아래와 같이 사용하는 경우가 있었다
class SampleEnum(Enum):
TYPE_A = 'type_a'
TYPE_B = 'type_b'
사실상 Enum의 name와 value가 어떤 규칙에 의해 동일하게 생기는 경우이다. 이것을 조금 더 편하게 알아서 name에 따라 value를 설정하게 해줄 수는 없을까?
Enum의 auto()를 사용해보자
# StrEnum 선언
class StrEnum(Enum):
def _generate_next_value_(name, start, count, last_values):
return name.lower().replace('_', '.')
# Enum클래스 생성
class PermissionType(StrEnum):
PEOPLE_MANAGE = auto()
ORGANIZATION_MANAGE = auto()
이렇게 StrEnum을 상속받은 PermissionType을 생성하면 _generate_next_value_에서 정한 규칙에 따라 value가 정해지게 된다. 위의 경우에는 PEOPLE_MANAGE의 value는 people.manage로 변경되는 것을 확인할 수 있다!
댓글