Search

enum

대분류
언어
소분류
Python
유형
열거형
상수
최종 편집 일시
2024/10/27 15:35
생성 일시
2024/07/09 05:23
15 more properties

enum

열거형
고유한 상수값에 연결된 기호 이름의 집합체
열거형 멤버는 대문자로 사용

Enum형 만들기

from enum import Enum class Color(Enum): RED = (enum.auto(), "빨강") BLUE = (enum.auto(), "파랑") GREEN = (enum.auto(), "초록")
Solidity
복사

enum.auto()

자동으로 값을 순차 할당해주는 함수

class명.__members__

해당 클래스에 있는 상수명들

Enum형 함수형 API 선언

class로 정의하지 않고 함수형 api로 정의하는 방법
더 간단함
Enum(열거형 이름, 열거형 멤버 이름의 소스)
from enum import Enum Color = Enum(value='Color', names='RED GREEN BLUE', start=1) list(Color)
Python
복사

Enum 함수

.name = name 속성 접근
.value = value 속성 접근

Enum 파생 열거형

IntEnum
Enum이 아닌 IntEnum을 상속
IntEnum에선 대소 비교가 가능
정수처럼 동작
from enum import IntEnum class Color(IntEnum): RED = 1 GREEN = 2 BLUE = 3 print(list(Color)) print(Color.RED < Color.BLUE) # [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>] # True
Python
복사
IntFlag
정수처럼 동작
IntFlag 멤버는 비트 연산자(&, |, ^, ~)를 사용하여 결합 가능
결과도 여전히 IntFlag 멤버
from enum import IntFlag class Permission(IntFlag): R = 4 W = 2 X = 1 RW = Permission.R | Permission.W print(RW) print(int(RW)) print(Permission.R in RW) print(Permission.X in RW) # Permission.R|W # 6 # True # False
Python
복사

상수 이름 가져오기

import enum class Rainbow(enum.Enum): RED = (enum.auto(), "빨강") ORANGE = (enum.auto(), "주황") YELLOW = (enum.auto(), "노랑") GREEN = (enum.auto(), "초록") BLUE = (enum.auto(), "파랑") INDIGO = (enum.auto(), "남색") VIOLET = (enum.auto(), "보라") # 1 lst1 = [] # 빈 리스트 선언 for e in Rainbow: # Rainbow에 있는 상수를 하나씩 추출 lst1.append(e.name) # 추출한 상수를 리스트에 추가 # 2 # 1. 리스트 선언 -> [] # 2. Rainbow에 있는 상수를 하나씩 추출 -> [for e in Rainbow] # 3. 추출한 상수를 리스트에 추가 -> [e.name for e in Rainbow] lst2 = [e.name for e in Rainbow] print(lst1) print(lst2)
Python
복사