Используйте класс перечисления для ввода 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 литерала может быть использован для указания типа проверки, которые функция может получать в качестве параметров функций равным значениям предоставляемым литералом(или одним из нескольких литералов, как в примере выше).