不需要枚举

2024-06-16 08:59:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近读到一篇文章,其中有人提到在python中不需要使用enum。我对这是不是真的很感兴趣。在

例如,我使用枚举来表示调制解调器控制信号:

class Signals:
  CTS = "CTS"
  DSR = "DSR"
  ...

我用if signal == Signals.CTS:不是比if signal == "CTS":好,还是我遗漏了什么?在


Tags: 调制解调器signalif信号文章enumclasssignals
3条回答

在您的确切例子中,我想使用已定义的常量是可以的,因为如果找不到常量,那么会引发错误,唉,字符串中的错误就不会出现。在

我想至少有一个使用面向对象的解决方案。在

顺便说一句:if "CTS":将始终True,因为只有空字符串被解释为False。在

Signals.CTS似乎比“CTS”好。但Signals不是枚举,而是一个具有特定字段的类。正如我所听到的,这种说法是,您不需要单独的enum语言构造,因为您可以像在问题中所做的那样做,或者可能:

CTS, DSR, XXX, YYY, ZZZ = range(5)

{g>,你可以用类似的方式导入一个模块。这在标准库中的几个模块中使用,包括re和os模块。在

这取决于您是否使用Signal.CTSSignal.DSR的值作为数据。例如,如果您将这些字符串发送到实际的调制解调器。如果这是真的,那么最好像您一样定义别名,因为当您期望的时候,外部接口往往会发生变化或不太统一。否则,如果您从未使用过符号值,则可以跳过抽象层直接使用字符串。在

唯一的问题是不要混合内部符号和外部数据。在

相关问题 更多 >