열거형 클래스 사용

실제 개발에서는 상수를 정의하지 않고는 할 수 없습니다. 상수를 정의해야 할 때 대문자 변수를 사용하여 월과 같은 정수로 정의하는 방법도 있습니다.

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12

물론 간단하고 빠르지만, 단점은 유형이 int이고 변수로 남아 있다는 것입니다.

좋은 방법 없을까요?

이때 클래스 유형을 정의하고 각 상수는 클래스의 유일한 인스턴스입니다. Python은 이 함수를 구현하기 위해 다음과 같이 Enum 클래스를 제공합니다.

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
# 遍历枚举类型
for name, member in Month.__members__.items():
    print(name, '---------', member, '----------', member.value)
# 直接引用一个常量
print('\n', Month.Jan)

출력 결과는 다음과 같습니다.

a41b1b020149ba50432eae7d4913fa0.png

Enum을 사용하여 열거형 클래스를 직접 정의할 수 있음을 알 수 있습니다. 위의 코드에서는 월에 대한 열거형 Month를 생성합니다. 여기서 주목해야 할 것은 생성 매개변수입니다. 첫 번째 매개변수 Month는 열거형 클래스의 클래스 이름을 나타내고 두 번째 튜플 매개변수는 열거형의 값을 나타냅니다. 열거형 클래스는 물론, 열거형 클래스는 __members__ 메서드를 통해 모든 멤버를 탐색합니다. 한 가지 주목할 점은 member.value가 기본적으로 1부터 시작하여 멤버에 자동으로 할당되는 int 유형의 상수라는 것입니다. 게다가 Enum의 멤버는 모두 싱글톤이므로 인스턴스화하거나 변경할 수 없습니다

지속적인 학습
  • 코스 추천
  • 코스웨어 다운로드
현재 코스웨어를 다운로드할 수 없습니다. 현재 직원들이 정리하고 있습니다. 앞으로도 본 강좌에 많은 관심 부탁드립니다~