【发布时间】:2019-10-21 06:20:08
【问题描述】:
这是我第一次使用 Enum,希望对下面的代码提供任何帮助。根据我的理解,当您使用一组值/名称定义 Enum 类时,该特定 Enum 类型的任何字段/变量都不能具有不在 Enum 类中的值/名称。
假设我必须创建一个 Allergy 类,它有一个“严重性”字段,其值可以是“LOW、MEDIUM、HIGH”,我必须使用枚举来表示它。我认为如果在创建对象时输入“严重性”的值不是 LOW、MEDIUM 或 HIGH,程序会引发错误。这是正确的还是我应该在设置/初始化“严重性”之前明确检查输入是否存在于枚举类中?如果我们必须明确检查,那么使用 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 类中的名称,但没有显示如何在不同的类中使用它。
谢谢。
【问题讨论】:
标签: python-3.x enums