デジタルトレンドナビ
システム開発

2024.04.08

Pythonの列挙型(Enum)とは?使うべき理由や基本的な使い方

Pythonの列挙型(Enum)とは?使うべき理由や基本的な使い方

PythonのEnumは、一連の固定値を表現するために用いるデータ型です。プログラムでPythonのEnumを使用する際は、PythonのEnumの役割を理解することが大切です。

本記事では、PythonのEnumの役割やほかのデータ型との違いを紹介します。また、PythonのEnumを使用すべき理由や使い方も紹介するので、使うべきか迷っている場合は、ぜひ参考にしてください。

この記事でわかること

  • PythonのEnumとは何か
  • PythonのEnumを使用するメリット
  • PythonのEnumを使う際の手順

PythonのEnumとは

PythonのEnumとは

PythonのEnumは、一連の名前付きの定数値を表現するために使用するデータ型です。あらかじめ定義された値を持っており、該当しない値は受け入れない仕組みとなっています。Enumは、Enumerationの略称であり、列挙型ともいわれています。

PythonのEnumを使用すると、意味のある名前で値を表せ、無効な値を使用するリスクを削減できるでしょう。たとえば、週の曜日を表現する場合のEnumは、以下のとおりです。

from enum import Enum

class Weekday(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7

day = Weekday.MONDAY
print(day) # 出力: Weekday.MONDAY

if day == Weekday.MONDAY:
print(“今日は月曜日です”) # 出力: 今日は月曜日です

Enumの役割

PythonのEnumは、コードの可読性を高める役割があります。あらかじめ定義された値のみ読み取るので、誤った値の記述を防止できるメリットがあります。

また、PythonのEnumを使用することにより、値を直接記述する必要がなくなるので、値が変更されてもコード全体に影響を与えるリスクが低減するでしょう。IDEや静的解析ツールでのサポートも向上し、保守性も高められます。

他のデータ型との違い

PythonのEnumは、あらかじめ定義された値しか持たないため、通常のデータ型と比べてコードの安全性が向上することが特徴です。通常のデータ型は、任意の値を持ち一貫性が保証されませんが、PythonのEnumはコード全体で一貫性を保てます。

PythonのEnumを使うべき理由

PythonのEnumを使うべき理由

PythonのEnumを使用すべきか悩んでいる方は、使うメリットの確認を行うことをおすすめします。ここでは、PythonのEnumを使用するべき理由を3つ紹介します。

可読性を向上させるため

PythonのEnumを使用することで、プログラムの可読性が向上するメリットがあります。定数値をわかりやすい名前で表現でき、単純な数値などで表すよりも、定数の意味がわかりやすく、可読性の向上が可能です。

また、PythonのEnumを使って定数値をグループ化することで、より定数値の意味をわかりやすく表現できます。たとえば、色を表現する際は、Colorと定義したグループのなかに、REDやBLUE、GREENなどの要素を持たせることが可能です。

PythonのEnumを使って入力したコード内で定数を変更する場合は、以下のようにリファクタリングが簡単に行えます。変更箇所を更新したい場合は、PythonのEnumの定義を変更するのみです。

from enum import Enum

class Color(Enum):
RED = 1
BLUE = 2
GREEN = 3

コードを簡潔化させるため

PythonのEnumは、定数値を繰り返し記述する必要がなくなり、コードを簡潔化できるメリットがあります。繰り返し記述する手間を省くことで、作業時間の短縮のほか、コードの重複の回避にもつながります。

また、複数ある定数値を1箇所にまとめて記述でき、コードの冗長性を削減することが可能です。たとえば、方向を表す定数値を定義する際、以下のようにDirectionと定義したなかにNORTHやSOUTH、EAST、WESTなどの要素を持たせられます。

from enum import Enum

class Direction(Enum):
NORTH = ‘north’
SOUTH = ‘south’
EAST = ‘east’
WEST = ‘west’

入力ミスを防ぐため

PythonのEnumは、あらかじめ複数ある定数値を定義しておくことで、記述した定数値以外が入力されることを防ぐメリットがあります。定数値を名前付きでわかりやすく表せるので、定数値の一覧を見て入力ミスがないかをひと目で確認できることが特徴です。

また、曜日を表す定数値を定義する際は、Weekdayと定義したなかにMONDAYやTUESDAYなどの要素を持たせることで、それ以外の値が誤って設定されることはありません。

PythonのEnumの使い方

PythonのEnumの使い方

PythonのEnumを使うメリットを理解できたが、使い方がわからないという方がいるのではないでしょうか。ここでは、PythonのEnumの使い方を4つの項目に分けて解説します。

Enumモジュールのインポート

PythonのEnumを使用する際は、まずenumモジュールをインポートすることが必要です。enumモジュールをインポートするコードは、以下のとおりです。

from enum import Enum

Enumクラスの作成

PythonでEnumクラスを作成する際は、classキーワードを使ってEnumを継承します。Enumクラス内で、固定値を持つメンバーを定義します。色を表すEnumクラスは、以下のとおりです。

from enum import Enum

class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3

このコードは、EnumクラスでColor(色)と定義し、赤色、緑色、青色の3つのメンバーを持つことを意味します。また、 Direction(方向)やWeekday(曜日)などと定義することが可能です。

Enumクラスのインスタンス生成

PythonでEnumクラスのインスタンスを生成する際は、通常のクラスのように生成するのではなく、Enumクラスのメンバーを直接参照します。Enumクラスのメンバーを参照する例は、以下のとおりです。

favorite_color = Color.RED
print(favorite_color) # Output: Color.RED

Enumメンバーの取得

PythonでEnumメンバーを取得する際は、名前や値を使えます。名前や値でEnumメンバーを取得するときのコードは、以下のとおりです。

# 名前で取得
day = Weekday[‘MONDAY’]
print(day) # Output: Weekday.MONDAY

# 値で取得
day = Weekday(1)
print(day) # Output: Weekday.MONDAY

Pythonはexe化することでさまざまなメリットがあります。こちらの記事では、Pythonのexe化について解説しています。メリットやおすすめのツールも取り上げているため、ぜひあわせてご覧ください。

まとめ

まとめ

PythonのEnumを使用することで、一連の定数値を名前付きで表現でき、それ以外の値が表示されないので、入力ミスを防げるメリットがあります。そのため、通常のデータ型と比べて、プログラム全体の一貫性を高められます。

また、名前付きでわかりやすく表せ、可読性が向上する点もメリットのひとつです。繰り返し定数値を記述する必要がなく、コードを簡潔化できるので、プログラミング作業の時間短縮にもつながるでしょう。

PythonでEnumの使用を検討している方は、本記事で紹介した使い方を参考にしてみてください。単純な数値などで表すデータ型とは異なり、意味のある名前を記述するので、プログラミングを勉強中の方でも理解しやすいでしょう。

投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。