2023-07-22 08:58:04

파이썬 3.4 버전에 추가된 Enum(열거형)은 고유한 상수값에 연결된 기호 이름(멤버)의 집합입니다[1]. Enum을 사용하면 개념적으로 서로 묶일 수 있는 상수들을 하나로 모아서 관리할 수 있게 됩니다. 

 

나라들의 수도 정보를 담은 Enum을 하나 만들어보겠습니다. 

 

from enum import Enum


class NationEnum(Enum):
    대한민국 = "서울"
    일본 = "도쿄"
    미국 = "워싱턴"
    독일 = "베를린"


print("대한민국 나라명: ", NationEnum.대한민국.name)
print("대한민국 수도명: ", NationEnum.대한민국.value)

print("미국 나라명: ", NationEnum.미국.name)
print("미국 수도명: ", NationEnum.미국.value)

 

 

NationEnum이라는 Enum에 대한민국, 일본, 미국, 독일이라는 멤버를 넣었습니다. Enum의 멤버는 이름과 값을 가집니다. 대한민국 = "서울" 이라는 멤버의 이름은 "대한민국"이고, 값은 "서울"입니다. 

 

만약 수도이름 뿐만 아니라, 그 나라가 속한 대륙의 정보도 하나의 Enum에 같이 담고 싶으면 어떻게 할까요? 다음과 같이 하나의 이름에 해당하는 여러 개의 값을 튜플에 담아줄 수 있습니다.  

 

from enum import Enum
from dataclasses import dataclass


@dataclass
class Tuple:
    capital: str
    continental: str


class NationEnum(Enum):
    대한민국 = Tuple("서울", "아시아")
    일본 = Tuple("도쿄", "아시아")
    미국 = Tuple("워싱턴", "아메리카")
    독일 = Tuple("베를린", "유럽")


print("대한민국 나라명: ", NationEnum.대한민국.name)
print("대한민국 수도명: ", NationEnum.대한민국.value.capital)
print("대한민국이 속한 대륙: ", NationEnum.대한민국.value.continental)

 

 

Tuple이라는 이름의 dataclass를 하나 만든 후에 그것을 활용하여 NationEnum의 값들을 튜플의 형태로 담을 수 있게 했습니다. 

 

Enum은 개발자 입장에서 개발을 매우 편하게 해주는 자료형이니 아직 안 써보신 분들은 꼭 한 번 써보세요. 

 

참고자료

[1] https://docs.python.org/ko/3.9/library/enum.html