0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonのEnumを使った定数の定義と活用方法

Posted at

PythonのEnumを使った定数の定義と活用方法

Pythonのenumモジュールを使用することで、プログラム内で使用する定数を簡潔に管理でき、可読性の高いコードを書くことができます。Enumは列挙型とも呼ばれ、特定の名前に対して定数値を設定するために使われます。これにより、数値や文字列を単なる値として扱うのではなく、意味のある名前を付けてプログラムの可読性を向上させることができます。

この記事では、Enumを活用した定数の定義方法を、実際のコード例を交えながら説明します。

Enumの定義

まず、Enumを使って定数を定義する方法を見てみましょう。

from enum import Enum

class PlanType(Enum):
    BASIC = 1
    PREMIUM = 2
    ENTERPRISE = 3

上記のコードでは、PlanTypeというEnumクラスを定義し、3つの定数(BASIC, PREMIUM, ENTERPRISE)にそれぞれ数値を割り当てています。

Enumメンバーのアクセス

定義したEnumメンバーには、名前または値でアクセスできます。

# メンバー名でアクセス
print(PlanType.BASIC)  # PlanType.BASIC

# 値でアクセス
print(PlanType(2))  # PlanType.PREMIUM

Enumの名前と値の取得

各メンバーには、name(名前)やvalue(値)というプロパティが自動で付与されます。

plan = PlanType.BASIC
print(plan.name)  # BASIC
print(plan.value)  # 1

Enumを使うメリット

Enumを使うことで、プログラム内で使用する定数に名前を付けることができ、ハードコーディングされた数値や文字列を避けることができます。これにより、コードの可読性が高まり、ミスを減らすことができます。

Enumに追加の属性やメソッドを持たせる

Enumのメンバーには追加の属性やメソッドを持たせることもできます。例えば、plan_nameやcodeなどの属性を持つEnumを作成して、定数に関連するデータをまとめて扱うことができます。

以下の例では、各プランに名前とコードを設定しています。

from enum import Enum
from flask import abort

class PranType(Enum):
    """
    プラン変更の種別
    """
    BASIC = ("普通", 31)
    HI_SPEC = ("高品質", 41)
    LOW_SPEC = ("低品質", 33)


    def __init__(self, plan_name, code):
        self.plan_name = plan_name
        self.code = code

    @classmethod
    def from_plan_name(cls, plan_name):
        # plan_nameに一致するプランを取得する
        for plan in cls:
            if plan.plan_name == plan_name:
                return plan.code
        # 該当するプランがない場合はエラーを返す
        abort(400, f"{plan_name} に対応するプランが見つかりません")

各メンバーに属性を追加する

上記のコードでは、SecureVdiTypeというEnumクラスに、plan_name(プラン名)とcode(プランコード)の2つの属性を持たせています。これにより、各プランに関連する情報を1つのEnumメンバーとしてまとめて管理できます。

例えば、from_plan_nameというクラスメソッドを使って、プラン名から対応するプランコードを取得することができます。

# 使用例
plan_name = "普通"
plan_code = PranType.from_plan_name(plan_name)
print(plan_code)  # 31

from_plan_nameメソッドでは、指定されたプラン名に一致するEnumメンバーを検索し、対応するcodeを返します。もし一致するプランが見つからない場合は、HTTP 400エラーを発生させます。

まとめ

Enumは、定数の管理をより整理された方法で行えるようにするための強力なツールです。Enumを使うことで、プログラム内で使用する定数を意味ある名前で管理でき、可読性が向上し、ミスを防ぐことができます。また、Enumメンバーに属性やメソッドを追加することで、関連するデータを1つのクラス内で効率的に管理することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?