열거형 비교
열거형 멤버는 순서가 지정되지 않으므로 동일성 및 동등성 비교만 지원합니다. ==의 사용법을 살펴보겠습니다.
#!/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
출력 결과에서 열거형 클래스의 멤버가 값 크기에 따라 정렬된 것을 볼 수 있습니다. 즉, 크기 비교가 가능합니다.