【发布时间】:2016-05-02 20:14:13
【问题描述】:
我注意到 Python 上的枚举有不同的行为。
我第一次惊讶地注意到输出是int:
>>>import enum
>>>class Color(enum.Enum):
red = 1
>>>Color.red
1
然后我意识到我安装了enum 而不是enum34:
$ sudo apt-get install python-enum34
而现在,结果不一样了:
>>>Color.red
<Color.red: 1>
我当前的应用程序正在接受 enum 类型,其中我使用 value.value 获取枚举值。当然,如果安装了错误的枚举,这将引发异常。
我该如何处理这个问题?
【问题讨论】:
-
您是在谈论除标准库
enum之外的一些enum模块吗?标准库中的那个不应该给你你看到的结果。 -
我不知道。我刚刚运行了
ipython的全新安装并尝试了这个示例。我得到了前一个输出。然后我安装了enum34,得到了后者的结果。 -
全新安装应该会给您一个 ImportError 或您想要的结果,具体取决于您的 Python 版本。你确定你记得从
enum.Enum继承吗?您清楚显示的代码 sn-ps 不是从实际的解释器会话中复制粘贴的。 -
enum.__file__是什么?也许您的系统上的某个地方还有其他一些杂散的enum模块。