Pythonでは、特定の値のみを許容する型としてLiteral
型が存在します。これはPython 3.8以降で使用可能で、ビルトインのtyping
パッケージに含まれています。
例えば、Literal[42, 10]
というLiteral
型は、42か10の整数のみを受け付けます。また、Literal["apple", "orange"]
という型は、”apple”もしくは”orange”という文字列のみを受け付けます。これらの値は整数と文字列など、複数の型を混ぜることも可能です。
一方で、Enum
は特定の値を列挙するための型で、Literal
型とは異なる用途があります。しかし、Literal
型とEnum
は一部の用途で似たような振る舞いをします。
以下に、Literal
型とEnum
の使用例を示します。
from typing import Literal
from enum import Enum
class Fruit(Enum):
APPLE = "apple"
ORANGE = "orange"
def print_fruit(fruit: Literal["apple", "orange"]) -> None:
print(fruit)
print_fruit(Fruit.APPLE.value)
この例では、Literal
型を使用して特定の文字列のみを受け付ける関数print_fruit
を定義しています。そして、Enum
を使用してフルーツを表現し、その値をprint_fruit
関数に渡しています。
Literal
型とEnum
の違いを理解することで、Pythonの型システムをより効果的に利用することができます。