はじめに
Pythonで定数を安全に使いたいなと思い、enumについてまとめました。詳しくは以下をご確認ください
enum --- 列挙型のサポート — Python 3.8.2 ドキュメント
Enum の作成
列挙型は読み書きが容易になるよう class 文を使って作成します。 列挙型は以下のように Enum のサブクラスとして定義します。
from enum import Enum class Color(Enum): RED = 1 GREEN = 2 BLUE = 3
列挙型の値を取り出す場合はvalueプロパティを使用します
print(Color.RED.value) print(Color.GREEN.value) print(Color.BLUE.value)
1 2 3
列挙型のメンバーは人が読める文字列表現を持ちます:
print(Color.RED) print(Color.GREEN) print(Color.BLUE) print(Color.RED.name) print(Color.GREEN.name) print(Color.BLUE.name)
Color.RED Color.GREEN Color.BLUE RED GREEN BLUE
列挙型は定義順でのイテレーションをサポートしています
for item in Color: print(item.value)
1 2 3
辞書型に格納できます
colors_set = {} colors_set[Color.RED] = 'apples' colors_set[Color.GREEN] = 'mountain' colors_set[Color.BLUE] = 'ocean' for key, value in colors_set.items(): print(f'{key.name} : {value}')
RED : apples GREEN : mountain BLUE : ocean
比較
等価の比較は定義されています:
print(Color.BLUE == Color.RED) print(Color.BLUE != Color.RED) print(Color.BLUE == Color.BLUE) # ただし、非列挙型値との比較は常に不等となります print(Color.RED == 1)
False True True False