파이썬 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은 개발자 입장에서 개발을 매우 편하게 해주는 자료형이니 아직 안 써보신 분들은 꼭 한 번 써보세요.
참고자료
'Dev > python' 카테고리의 다른 글
[python] logging 모듈로 로그 찍을 때 f-string 포매팅 권장하지 않음 (0) | 2023.08.11 |
---|---|
[python] Enum의 네임, 값 리스트 추출하는 방법 (0) | 2023.08.11 |
[python] 문자열이 어떤 문자열로 시작하는지 확인하는 메서드, startswith() (0) | 2023.07.25 |
[python] is와 ==의 차이 (0) | 2023.07.23 |
[python] 딕셔너리의 리스트, 딕셔너리 값을 기준으로 정렬 (0) | 2023.07.21 |
[python] unittest로 단위 테스트하기(소요 시간 체크도 함께) (0) | 2023.07.17 |
[python] 문자열을 어떤 구분자로 분리하여 리스트에 담는 방법, split() 메서드 (0) | 2023.07.16 |
[python] 유용한 파이썬 표준 함수 eval() 활용하기 (0) | 2023.07.14 |