열거형 비교

열거형 멤버는 순서가 지정되지 않으므로 동일성 및 동등성 비교만 지원합니다. ==의 사용법을 살펴보겠습니다.

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
from enum import Enum
class User(Enum):
    Twowater = 98
    Liangdianshui = 30
    Tom = 12
Twowater = User.Twowater
Liangdianshui = User.Liangdianshui
print(Twowater == Liangdianshui, Twowater == User.Twowater)
print(Twowater is Liangdianshui, Twowater is User.Twowater)
try:
    print('\n'.join('  ' + s.name for s in sorted(User)))
except TypeError as err:
    print(' Error : {}'.format(err))

출력 결과:

False True
False True
 Error : '<' not supported between instances of 'User' and 'User'

최종 출력 결과를 보고 예외를 보고할 수 있습니다. 그 이유는 보다 큼 및 보다 작음 비교 연산자가 TypeError 예외를 발생시키기 때문입니다. 즉, Enum 클래스의 열거형은 크기 연산자 비교를 지원하지 않습니다.

그러면 열거형 클래스를 사용하여 크기를 비교할 수 있나요?

물론 열거형에 IntEnum 클래스를 사용하면 비교 기능이 지원됩니다.

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import enum
class User(enum.IntEnum):
    Twowater = 98
    Liangdianshui = 30
    Tom = 12
try:
    print('\n'.join(s.name for s in sorted(User)))
except TypeError as err:
    print(' Error : {}'.format(err))

출력 결과 보기:

Tom
Liangdianshui
Twowater

출력 결과에서 열거형 클래스의 멤버가 값 크기에 따라 정렬된 것을 볼 수 있습니다. 즉, 크기 비교가 가능합니다.

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