PythonでEnumを使いこなす5つのステップ

PythonのEnumを学ぶためのイラストガイドPython
この記事は約5分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

Pythonといえば、その柔軟性と多機能性から、科学計算、Web開発、機械学習といった様々なフィールドで広く利用されています。

そんなPythonには、コードをより安全に、かつ分かりやすくするための便利な機能がたくさんあります。

その一つが、この記事の主題であるEnum(列挙型)です。

では、実際にPythonでEnumを使いこなすための5つのステップを見ていきましょう。

●PythonのEnumとは?

○Enumの基本概念

Enumとは、Pythonの標準ライブラリであるenumモジュールに含まれる特殊なクラスで、予め定義した限られた値から選択する変数を扱う際に便利な機能を提供します。

これにより、特定の値のみを許可することで、コードの安全性を向上させることが可能となります。

●PythonでEnumを作る方法

○サンプルコード1:基本的なEnumの作成

Pythonで基本的なEnumを作成する方法を表すコードを紹介します。

このコードでは、Enumを使って四季を表現しています。

この例では、enumモジュールのEnumを継承して新たなクラスSeasonを作成し、その中で四季を定義しています。

from enum import Enum

class Season(Enum):
    SPRING = 1
    SUMMER = 2
    AUTUMN = 3
    WINTER = 4

このコードを実行すると、Seasonという名前のEnumが作成され、そのメンバーとしてSPRING、SUMMER、AUTUMN、WINTERが定義されます。

各メンバーはそれぞれ1から4の値を持っています。

○サンプルコード2:Enumのメンバーへのアクセス

Enumのメンバーへのアクセスは非常に簡単で、次のようにして行うことができます。

このコードでは、先ほど作成したSeason Enumのメンバーにアクセスし、その名前と値を表示しています。

print(Season.SPRING)
print(Season.SPRING.name)
print(Season.SPRING.value)

このコードを実行すると、「Season.SPRING」「SPRING」「1」と表示されます。

それぞれEnumのメンバー、メンバーの名前、メンバーの値を示しています。

●Enumを活用する方法

○サンプルコード3:Enumをループで使用

Enumは、そのメンバーをループで順に取得することも可能です。

下記のコードでは、Enumのメンバーをforループで回し、各メンバーの名前と値を表示しています。

for season in Season:
    print(f'{season.name}: {season.value}')

このコードを実行すると、四季の名前とそれぞれに割り当てられた値が表示されます。

○サンプルコード4:EnumとSwitchの代替

PythonにはSwitch文が存在しないため、代わりにif-elif-else文を使いますが、Enumを活用することでより明瞭なコードを書くことが可能です。

下記のコードでは、Enumを利用して季節に応じたメッセージを出力しています。

def greeting(season):
    if season == Season.SPRING:
        return '春ですね!'
    elif season == Season.SUMMER:
        return '暑い夏が来ました!'
    elif season == Season.AUTUMN:
        return '秋の風情を感じますね。'
    elif season == Season.WINTER:
        return '冬の寒さが厳しいですね。'

print(greeting(Season.SUMMER))

このコードを実行すると、「暑い夏が来ました!」と表示されます。

これにより、Switchの代替としてEnumを使用することでコードが読みやすくなります。

●Enumの注意点と対処法

○Enumのイミュータビリティ

PythonのEnumはイミュータブル(不変)なので、一度作成したEnumのメンバーは変更することができません。

これはEnumの安全性を確保するための重要な特性であり、意図せぬ値の代入を防いでくれます。

○サンプルコード5:Enumのメンバーの比較

Enumのメンバーは、==演算子を使用して比較することができます。

下記のコードでは、二つのEnumのメンバーが同じであるかを確認しています。

print(Season.SPRING == Season.SUMMER)
print(Season.SPRING == Season.SPRING)

このコードを実行すると、「False」「True」と表示されます。

これは、それぞれ「Season.SPRINGとSeason.SUMMERは同じではない」「Season.SPRINGとSeason.SPRINGは同じである」を意味しています。

●Enumのカスタマイズ方法

○サンプルコード6:Auto Enumの作成

PythonのEnumはカスタマイズすることも可能です。

下記のコードでは、自動的に値を割り当てるAuto Enumを作成しています。

from enum import Enum, auto

class AutoSeason(Enum):
    SPRING = auto()
    SUMMER = auto()
    AUTUMN = auto()


    WINTER = auto()

このコードを実行すると、AutoSeasonという名前のEnumが作成され、そのメンバーとしてSPRING、SUMMER、AUTUMN、WINTERが定義されます。

各メンバーはauto()関数により、自動的に1から4の値が割り当てられます。

まとめ

以上、PythonでEnumを使いこなすための5つのステップをご紹介しました。

Enumを活用することで、予め定義された限られた値から選択する変数を扱う際の安全性とコードの可読性を向上させることができます。

Pythonの機能を最大限に活用して、より良いコードを書くためにEnumの使い方を是非マスターしてください。