파이썬에서의 enum


저는 C를 주로 쓰는데요, 파이썬을 배워보려고 합니다. 파이썬에서도 c의 enum과 같은 기능이 지원 되나요?

  • 2016년 01월 05일에 작성됨

조회수 446


1 답변


좋아요
0
싫어요
채택취소하기

파이썬 3.4버전에서 enum기능이 추가되었습니다. pypi에서는 구버전(3.3, 3.2, 3.1, 2.7, 2.6, 2.5, 2.4)에서도 enum기능을 제공합니다. 구버전에서도 enum을 쓰고 싶으면 $pip install enum 이 아니라 $pip install enum34 를 해주세요. (숫자가 없으면 호환되지 않습니다.)

사용방법은 다음과 같습니다. C랑 비슷하게 쓰실거면

from enum import Enum
Animal = Enum('Animal', 'ant bee cat dog')

아니면 이렇게 쓰세요

class Animals(Enum):
    ant = 1
    bee = 2
    cat = 3
    dog = 4

그보다 구 버전에서는

def enum(**enums):
    return type('Enum', (), enums)

Animal = enum(ant=1, bee=2, cat=3, dog=4)
print Animal.ant

와 같이 썼습니다.

자동으로 번호를 매기고 싶다면 다음과 같이 쓰는 방법이 있습니다.

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)

Animal = enum('ant', 'bee', 'cat', 'dog')
print Animal.ant
  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close