본문 바로가기
Python & Django

Python에서 Enum auto() 활용하여 Value 지정하기

by growing.ryan 2022. 8. 24.

Python에서 Enum을 사용하다 보면 아래와 같이 사용하는 경우가 있었다

class SampleEnum(Enum):
	TYPE_A = 'type_a'
	TYPE_B = 'type_b'

사실상 Enum의 name와 value가 어떤 규칙에 의해 동일하게 생기는 경우이다. 이것을 조금 더 편하게 알아서 name에 따라 value를 설정하게 해줄 수는 없을까?

Enum의 auto()를 사용해보자

 

enum — 열거형 지원 — Python 3.10.6 문서

enum — 열거형 지원 소스 코드: Lib/enum.py 열거형(enumeration)은 고유한 상숫값에 연결된 기호 이름(멤버)의 집합입니다. 열거형 내에서, 멤버를 아이덴티티로 비교할 수 있고, 열거형 자체는 이터레

docs.python.org

# 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로 변경되는 것을 확인할 수 있다!

댓글