Python

Как ввести подсказки типов(type hint) Enums в Python

Используйте класс перечисления для ввода type hint в enum, например

def get_value_from_enum(size: Sizes):

Вы сможете получить доступ к любому элементу перечисления в теле функций без ошибки среды.

from enum import Enum


class Sizes(Enum):
    SMALL = 1
    MEDIUM = 2
    LARGE = 3


def get_value_from_enum(size: Sizes):
    print(size.name)  # 👉️ MEDIUM
    print(size.value)  # 👉️ 2

    return size.value


result = get_value_from_enum(Sizes.MEDIUM)

print(result)  # 👉️ 2

Мы используем перечисление класса Sizes для ввода type hint в enum.

Альтернативный подход, это использование типа Literal для указания, что элемент функций может быть перечислением.

from typing import Literal
from enum import Enum


class Sizes(Enum):
    SMALL = 1
    MEDIUM = 2
    LARGE = 3


def get_value_from_enum(size: Literal[Sizes.SMALL, Sizes.MEDIUM, Sizes.LARGE]):
    print(size.name)  # 👉️ MEDIUM
    print(size.value)  # 👉️ 2

    return size.value


result = get_value_from_enum(Sizes.MEDIUM)

print(result)  # 👉️ 2

Type hint литерала может быть использован для указания типа проверки, которые функция может получать в качестве параметров функций равным значениям предоставляемым литералом(или одним из нескольких литералов, как в примере выше).

To top