0Pricing
Python Academy · 강의

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Enum 클래스
  2. IntEnum과 Flag
  3. NamedTuple 기초
  4. typing.NamedTuple
← Python Academy(으)로 돌아가기