我刚刚发现了Python中存在一个Enum基类,并且正在试图想象如何将其用于我的项目。
假设我定义了一个交通灯状态:
from enum import Enum, auto
class Signal(Enum):
red = auto()
green = auto()
orange = auto()
假设我从程序中的某个子系统接收到信息,以表示颜色名称的字符串的形式,例如brain_detected_colour = "red"
。
如何将此字符串与我的红绿灯信号进行比较?
显然,brain_detected_colour is Signal.red
是False
,因为Signal.red
不是一个字符串。
Signal(brain_detected_colour) is Signal.red
会失败并显示ValueError: 'red'不是有效的Signal
。
brain_detected_colour is Signal.red.name
中使用is
是有风险的;最好使用==
。 - mwchaseSignal(brain_detected_colour) is Signal.red
(答案末尾提到,用于构建带有字符串值的枚举时)...但是Signal[brain_detected_colour] == Signal.red
是有效的。请注意,我考虑了使用“==”进行比较更少风险的评论。 - Sander Vanden Hauttea is b
是id(a) == id(b)
的语法糖。 - Hugh Perkins