열거 유형은 일반적으로 요일, 월, 상태 등과 같은 특정 제한된 컬렉션을 나타내는 데 사용되는 레이블 또는 상수 컬렉션으로 간주될 수 있습니다. 파이썬의 기본형(내장형)에는 특별한 열거형이 없지만 딕셔너리, 클래스 등 다양한 메소드를 통해 구현할 수 있습니다.
WEEKDAY = { 'MON': 1, 'TUS': 2, 'WEN': 3, 'THU': 4, 'FRI': 5 } class Color: RED = 0 GREEN = 1 BLUE = 2
위 두 메소드는 단순한 열거형으로 간주할 수 있습니다. 구현 시 이러한 열거형 변수가 로컬 범위에서만 사용된다면 문제가 없지만 문제는 모두 변경 가능하다는 것입니다. 즉, 다른 위치에서 수정되어 일반적인 사용에 영향을 미칠 수 있다는 것입니다.
WEEKDAY['MON'] = WEEKDAY['FRI'] print(WEEKDAY) {'FRI': 5, 'TUS': 2, 'MON': 5, 'WEN': 3, 'THU': 4} 通过类定义的枚举甚至可以实例化,变得不伦不类: c = Color() print(c.RED) Color.RED = 2 print(c.RED) 0 2
물론, 튜플과 같은 불변 유형(immutable)을 사용할 수도 있지만 이는 열거 유형의 원래 의도를 잃고 레이블을 의미 없는 변수로 저하시킵니다.
COLOR = ('R', 'G', 'B') print(COLOR[0], COLOR[1], COLOR[2]) R G B
더 나은 솔루션을 제공하기 위해 Python 열거형 표준 라이브러리가 다음에 추가되었습니다. 버전 3.4 ~ PEP 435. 3.4 이전 버전의 경우 pip install enum을 통해 호환되고 지원되는 라이브러리를 다운로드할 수도 있습니다. enum은 Enum/IntEnum/unique라는 세 가지 도구를 제공하며 사용법은 매우 간단합니다. Enum/IntEnum을 상속하여 열거형 유형을 정의할 수 있습니다. IntEnum은 열거형 멤버를 정수 유형으로 제한하며 고유 메서드는 다음을 수행할 수 있습니다. 데코레이터는 열거형 멤버의 값을 반복 불가능하도록 제한합니다.
from enum import Enum, IntEnum, unique try: @unique class WEEKDAY(Enum): MON = 1 TUS = 2 WEN = 3 THU = 4 FRI = 1 except ValueError as e: print(e) duplicate values found in : FRI -> MON try: class Color(IntEnum): RED = 0 GREEN = 1 BLUE = 'b' except ValueError as e: print(e) invalid literal for int() with base 10: 'b'
위 내용은 열거형 파이썬이 뭐죠?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!