파이썬에서의 enum

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

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
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.