Я впервые работаю с Enum и буду признателен за любую помощь с кодом ниже. Насколько я понимаю, когда вы определяете класс Enum с набором значений / имен, любое поле / переменная этого конкретного типа Enum не может иметь значений / имен, не входящих в класс Enum.
Предположим, мне нужносоздайте класс аллергии, который имеет поле для «серьезности», которое может иметь значения «LOW, MEDIUM, HIGH», и я должен представить это с помощью enumЯ подумал, что если вход для "серьезности" при создании объекта имеет значение, отличное от LOW, MEDIUM или HIGH, программа выдаст ошибку. Это правильно, или я должен явно проверить, что входные данные присутствуют в классе enum перед установкой / инициализацией "серьезности"? Если мы должны явно проверить, какова цель использования Enum?
from enum import Enum,auto
class Severity(Enum):
LOW = auto()
MEDIUM = auto()
HIGH = auto()
class Allergy:
def __init__(self, name, symptoms, reporter, severity:Severity):
self.__name = name
self.__reporter = reporter
self.__symptoms = symptoms
self.__severity = severity
def get_severity(self):
return self.__severity
def set_severity(self, severity:Severity):
self.__severity = severity
allergy = Allergy("Dust Allergy","sneezes","Doctor", "5")
print("How severe is the allergy? ",allergy.get_severity())
Я ожидал, что код выдаст ошибку или не запустится, поскольку "5" отсутствует в классе Enum. Но это вывод
How severe is the allergy? 5
Я не уверен, что здесь упускаю что-то очень простое, но ни один из примеров в Интернете, кажется, не рассеивает мои сомнения. Все примеры, которые я видел до сих пор, показывают основной синтаксис / как получить прямой доступ к именам в классе Enum, но не как использовать это в другом классе.
Спасибо.