つぶやきenum.auto
列挙型で連番を振る
最近になって、Pythonの列挙型で番号を順番に割り当てるときに使えるauto関数を知ったのでまとめてみます。
ちなみにPythonの列挙型(Enum)、公式ドキュメントはこちらです。
enum.auto
autoはpython3.6で追加されたヘルパークラスで、列挙型で定義した変数に連番を振る機能を提供します。
from enum import IntEnum, auto class Post(IntEnum): """ 役職列挙型列挙型 """ STAFF = auto() # 1 SECTION_CHIEF = auto() # 2 GENERAL_MANAGER = auto() # 3
何が嬉しいの?
autoがナイとき…
autoを使わずに列挙型を実装した時、実際のコードは以下のような感じになると思います。
from enum import IntEnum class Post(metaclass=IEnum): """ 役職列挙型列挙型 """ STAFF = 1 SECTION_CHIEF = 2 GENERAL_MANAGER = 3
上のコードにおいて、「変数STAFFを削除し、連番を"1"から振りなおす」という修正をすることになったとしましょう。
このとき、
- 変数STAFFの削除
- 変数SECTION_CHIEFの値を"1"に変更
- 変数GENERAL_MANAGERの値を"2"に変更
という3つのステップを踏む必要があります。
・・・メンドクサイよう(/ω\)
autoがアルときー!
そんな修正も、autoを使った実装にすると「STAFFを削除する」だけで済むようになります。また、その後「SECTION_CHIEFの前に新しく変数を定義し、"1"から連番を振る」という処理を実装する際にも、その行を加えるだけで修正が終わります。
んー、なかなかイイ感じ。
参考
最後に、参考になりそうなサイトを3つほどご紹介します。
追伸:記事の補足・訂正等ありましたらコメントいただけると幸いです!