python enumの使い方
概要
- pythonで扱えるenum型
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
class C1(IntEnum):
RED = 0
BLUE = 1
GREEN = 2
assert C1.RED == 0
C3 = Enum("C3", ["RED", "BLUE", "GREEN"])
assert C3.RED != C3.BLUE
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