IntEnum과 Flag
정수 열거형과 플래그 열거형 사용하기
IntEnum과 Flag은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
일반 Enum을 넘어
enum 모듈은 특수한 기본 클래스를 제공합니다. IntEnum 멤버는 정수처럼 동작하고, 플래그 멤버는 비트 연산자로 결합할 수 있습니다. 일반 Enum으로는 제한적인 경우를 해결할 수 있습니다.
일반 Enum은 정수가 아닙니다
일반 Enum 멤버는 정수 값과 서로 바꿔 사용할 수 없습니다. 숫자와 비교하면 거짓을 반환합니다.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum은 정수처럼 비교됩니다
IntEnum 멤버는 실제로 정수이므로 숫자 값과 같다고 비교되며 순서 비교도 지원합니다.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)산술 연산에서 IntEnum 사용
멤버가 실제 정수이므로 수학 연산과 인덱싱에 사용할 수 있습니다. 값이 숫자를 사용하는 코드와 실제로 연동되어야 할 때 활용하십시오.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)IntEnum 멤버 정렬
IntEnum은 순서 비교를 지원하므로 멤버 목록을 추가 키 함수 없이 값에 따라 정렬할 수 있습니다.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
for p in sorted([Priority.HIGH, Priority.LOW, Priority.MEDIUM]):
print(p.name)결합 가능한 옵션에 플래그 사용
Flag 열거형은 결합해서 사용할 값을 위한 것입니다. 각 멤버가 고유한 비트를 차지하도록 2의 거듭제곱을 할당하십시오.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)|로 플래그 결합
비트 OR 연산자인 |를 사용해 플래그를 하나의 복합 값으로 결합하십시오.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)in으로 포함 여부 확인
in 연산자를 사용해 플래그가 설정되어 있는지 확인하십시오. 이 연산자가 비트 단위 검사를 대신 수행합니다.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(Permission.READ in access)
print(Permission.EXECUTE in access)교집합과 제거
&(AND)로 플래그를 결합해 공통 비트를 찾고, 보수 ~에 대해 &를 사용해 플래그를 제거하십시오.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
still = access & ~Permission.WRITE
print(still)정수 플래그를 위한 IntFlag
IntFlag는 두 개념을 결합합니다. 결합할 수 있는 플래그이면서 일반 정수처럼도 동작하므로 C 인터페이스나 숫자로 저장된 비트 마스크와 연동할 때 유용합니다.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))결합된 플래그 순회
결합된 Flag 값을 반복하면 그 안에 포함된 각 개별 플래그가 반환되므로 활성화된 옵션을 나열할 때 편리합니다.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.EXECUTE
for p in access:
print(p.name)간단히 확인하기
일반 Enum 대신 Flag 열거형을 선택하는 이유는 무엇인가요?
정리
정수 열거형과 플래그 열거형을 배웠습니다.
IntEnum멤버는 정수처럼 동작하며 순서 비교와 산술 연산을 지원합니다.Flag멤버는|,&,~로 결합하고in으로 검사할 수 있습니다.IntFlag는 두 동작을 결합합니다.- 플래그 값에는 2의 거듭제곱을 사용하십시오.
자주 묻는 질문
“IntEnum과 Flag” 강의는 무료인가요?
네 — “IntEnum과 Flag” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“IntEnum과 Flag”에서 뭘 배우나요?
정수 열거형과 플래그 열거형 사용하기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“IntEnum과 Flag” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Enum 클래스
- IntEnum과 Flag
- NamedTuple 기초
- typing.NamedTuple