본문 바로가기
프로그래밍/Python

[Python] enum 타입 사용하기

by rahites 2024. 2. 7.

코드 분석을 하다 자주 확인할 수 있는 enum 타입을 정리해 보도록 하겠다.

 

https://docs.python.org/ko/3.9/library/enum.html

 

enum — 열거형 지원 — Python 3.9.17 문서

enum — 열거형 지원 소스 코드: Lib/enum.py 열거형(enumeration)은 고유한 상숫값에 연결된 기호 이름(멤버)의 집합입니다. 열거형 내에서, 멤버를 아이덴티티로 비교할 수 있고, 열거형 자체는 이터레

docs.python.org


enum은 enumeration의 준말로 "열거"라는 한국어 뜻을 가지고 있다. 이 패키지는 코드를 단단하게 짜는데 도움을 줄 수 있으며, 아래와 같이 패키지를 불러와 사용할 수 있다.  

 

from enum import Enum

 

다음으로는 아래와 같이 Enum 클래스를 상속한 클래스를 정의하여 사용한다.

class abc(Enum):
    a = 1
    b = 2
    c = 3
'''
abc.a.value -> 1
abc['a'].value -> 1 
abc.a.name -> 'a'
abc['a'].name -> 'a'
type(abc.a) -> <enum 'abc'>
'''

 

name, value를 통해 해당 클래스의 인스턴스 정보를 확인할 수 있으며, 관련 변수(상태)들을 하나의 클래스로 만들어 관리하기 용이하다.

 

예를들어 서버의 허용 포트를 하나의 클래스를 활용해 아랴왜 같이 정의해 사용할 수 있다. 

class PORT(Enum):
    SSH = 22
    HTTP = 8080

 

여러 인스턴스에 대해 숫자를 1, 2, 3으로 입력해주고 싶다면 아래와 같이 enum.auto()를 사용할 수 있다. (자동 1, 2, 3 ...)

(이게 더 번잡해 보이긴한다... 함수로 만들어서 깔끔하게 만드는게 더 좋아 보임)

class Shake(Enum):
    VANILLA = enum.auto()
    CHOCOLATE = enum.auto()
    COOKIES = enum.auto()
    MINT = enum.auto()

 

더 다양한 예시는 공식 문서를 참고하도록 하자..!!

 

(∪.∪ )...zzz

댓글