Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

enum - Python에서 열거형 지원

<시간/>

열거형은 고유하고 상수 값이 지정된 식별자(구성원) 집합입니다. 열거 내에서 구성원을 ID로 비교할 수 있습니다. 열거형 개체를 축소할 수도 있습니다.

enum 모듈은 다음 클래스를 정의합니다.

열거 :열거 상수를 생성하기 위한 기본 클래스입니다.

IntEnum :int의 하위 클래스이기도 한 열거 상수를 만들기 위한 기본 클래스입니다.

열거형은 클래스 구문을 사용하여 생성됩니다.

#enumexample.py
from enum import Enum
class langs(Enum):
Python = 1
Java = 2
Cpp = 3
Ruby = 4

열거형 멤버에는 사람이 읽을 수 있는 문자열 표현과 재현 표현이 있습니다.

>>> from enumexample import langs
>>> print (langs.Python)
langs.Python
>>> print (repr(langs.Python))
<langs.Python: 1>

각 열거형 멤버에는 이름 및 값 속성이 있습니다.

>>> x = langs.Python
>>> x.name
'Python'
>>> x.value
1

루프를 사용하여 모든 구성원을 반복할 수 있습니다.

>>> for lang in langs:
print (lang.name, lang.value)
Python 1
Java 2
Cpp 3
Ruby 4

회원은 가치 또는 정체성의 도움으로 액세스할 수 있습니다.

>>> langs(3)
<langs.Cpp: 3>
>>> langs['Java']
<langs.Java: 2>

아이덴티티 연산자 is 및 is not은 열거형의 멤버를 비교하는 데 사용할 수 없습니다.

>>> x = langs(2)
>>> y = langs(4)
>>> x is y
False

동일한 이름을 가진 두 개의 열거형 멤버가 있는 것은 유효하지 않습니다. 그러나 두 개의 열거형 멤버는 동일한 값을 가질 수 있습니다. enumexample.py를 다음으로 변경:

from enum import Enum
class langs(Enum):
Python = 1
Java = 2
Cpp = 3
Ruby = 4
Cplusplus = 3
>>> from enumexample import langs
>>> langs.Cpp
<langs.Cpp: 3>
>>> langs.Cplusplus
<langs.Cpp: 3>
>>> langs(3)
<langs.Cpp: 3>

기본적으로 열거형은 동일한 값에 대한 별칭으로 여러 이름을 가질 수 있습니다. 고유한 값을 보장하려면 @enum.unique 열거를 위한 클래스 데코레이터를 사용하세요.