Используйте класс перечисления для ввода type hint в enum, например
def get_value_from_enum(size: Sizes):
Вы сможете получить доступ к любому элементу перечисления в теле функций без ошибки среды.
main.pyfrom 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 для указания, что элемент функций может быть перечислением.
main.pyfrom 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 литерала может быть использован для указания типа проверки, которые функция может получать в качестве параметров функций равным значениям предоставляемым литералом(или одним из нескольких литералов, как в примере выше).