python enum

python enumの使い方

タグ enum


概要

  • pythonで扱えるenum型
  • strintを継承することができる
  • IntEnumを継承すると数値として扱える
  • Flagを継承するとbitを立てるようなflag表現にする
  • auto()で初期化すると数値等を設定する必要はない

具体例

from enum import Enum, IntEnum, auto, Flag

class C0(Enum):
    RED = 0
    BLUE = 1
    GREEN = 2

assert C0.RED != 0

IntEnumを継承する例

class C1(IntEnum):
    RED = 0
    BLUE = 1
    GREEN = 2

assert C1.RED == 0

C3 = Enum("C3", ["RED", "BLUE", "GREEN"])
assert C3.RED != C3.BLUE

auto()を使う例

class C4(Enum):
    RED = auto()
    BLUE = auto()
    GREEN = auto()

class C5(Flag):
    RED = auto()
    GREEN = auto()
    BLUE = auto()
    MAGENTA = RED | BLUE
    YELLOW = RED | GREEN
    CYAN = GREEN | BLUE

print(C5(3)) # C5.YELLOW
print(C5(7)) # C5.CYAN|MAGENTA|BLUE|YELLOW|GREEN|RED

str型を継承する例

from enum import Enum

class StageEnum(str, Enum):
    AWARENESS = "認知段階"
    INTEREST = "興味関心"
    COMPARISON = "比較検討"
    PURCHASE = "購入段階"

print(StageEnum.AWARENESS) # StageEnum.AWARENESS
print(StageEnum.AWARENESS.value) # 認知段階

参考