![見出し画像](https://assets.st-note.com/production/uploads/images/72284684/rectangle_large_type_2_ac5f95b91dcac29b863850efa4f9fff5.png?width=1200)
Pythonで列挙型を使う
はじめに
多くのプログラミング言語では、列挙型と呼ばれる集合体を定義するための型定義が提供されています。
列挙型とは、プログラミング言語やデータベース管理システムなどにおけるデータ型 の一つで、複数の異なる定数を一つの集合として定義するもの。多くの言語では “enum” の略号で示される。
列挙型を使うことで、定数をひとまとまりのグループとして捉えることができるため、コードの可読性が上がります。
今回は、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)
![](https://assets.st-note.com/img/1644913519623-miZ8JVPfVt.png?width=1200)
参照する場合、下記のように実装し、条件を判定することができます。
if kind == MemberKind.Silver:
print('シルバー会員です')
else:
print('シルバー会員ではありません')
![](https://assets.st-note.com/img/1644913587657-5ihvNcH8NB.png?width=1200)
Enumクラスのメンバーには、nameプロパティとvalueプロパティがあります。
nameプロパティは名前を、valueプロパティは値を取得することができます。
print(kind.name)
print(kind.value)
![](https://assets.st-note.com/img/1644913661129-bfjxmE3sA8.png?width=1200)
ループさせて、name、valueプロパティを参照することも可能です。
for kind in MemberKind:
print(kind,kind.value)
![](https://assets.st-note.com/img/1644913782549-cwUm9DyTDX.png?width=1200)
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)
![](https://assets.st-note.com/img/1644914068092-wq0kNJJLlD.png?width=1200)
値を設定した後に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)
![](https://assets.st-note.com/img/1644914126810-NKD5b9cM51.png?width=1200)
まとめ
今回は、Pythonで列挙型である、Enumクラスを使う方法についてまとめました。