見出し画像

Pythonで列挙型を使う

はじめに

多くのプログラミング言語では、列挙型と呼ばれる集合体を定義するための型定義が提供されています。

列挙型とは、プログラミング言語やデータベース管理システムなどにおけるデータ型 の一つで、複数の異なる定数を一つの集合として定義するもの。多くの言語では “enum” の略号で示される。

https://e-words.jp/w/%E5%88%97%E6%8C%99%E5%9E%8B.html

列挙型を使うことで、定数をひとまとまりのグループとして捉えることができるため、コードの可読性が上がります。

今回は、Pythonで列挙型を使う方法についてまとめます。

動作環境

・windows10
・Jupyter Notebook 6.4.6
・Python 3.8.11

Enumクラス

Pythonで列挙型を使う場合、Enumクラスを継承し、列挙型のクラスを定義します。

from enum import Enum

class MemberKind(Enum):
    Silver = 0
    Gold = 1
    Platinum = 2
    Diamond = 3

設定、取得は下記のように実装することができます。

kind = MemberKind.Silver
print(kind) 
設定、取得時の実行結果

参照する場合、下記のように実装し、条件を判定することができます。

if kind == MemberKind.Silver:
	print('シルバー会員です')
else:
	print('シルバー会員ではありません')
参照時の実行結果

Enumクラスのメンバーには、nameプロパティとvalueプロパティがあります。
nameプロパティは名前を、valueプロパティは値を取得することができます。

print(kind.name)
print(kind.value)
nameプロパティ、valueプロパティの実行結果

ループさせて、name、valueプロパティを参照することも可能です。

for kind in MemberKind:
  print(kind,kind.value)
ループ実行結果

Enumの値を自動設定する場合、auto関数を使用します。最初の値は、1から始まります。

from enum import Enum, auto

# 定義
class MemberKind(Enum):
  Silver = auto()
  Gold = auto()
  Platinum = auto()
  Diamond = auto()

for kind in MemberKind:
  print(kind,kind.value)
auto関数の実行結果1

値を設定した後にauto関数を使用すると、その後はインクリメントした値を設定されます。

from enum import Enum, auto

class MemberKind(Enum):
    Silver = 5
    Gold = auto()
    Platinum = auto()
    Diamond = auto()

for kind in MemberKind:
  print(kind,kind.value)
auto関数の実行結果2

まとめ

今回は、Pythonで列挙型である、Enumクラスを使う方法についてまとめました。

この記事が気に入ったらサポートをしてみませんか?