我注意到Python上的枚举有不同的行为.
我第一次惊讶地注意到这个输出是int:
>>>import enum
>>>class Color(enum.Enum):
red = 1
>>>Color.red
1
Run Code Online (Sandbox Code Playgroud)
然后我意识到我enum安装了而不是enum34:
$ sudo apt-get install python-enum34
Run Code Online (Sandbox Code Playgroud)
现在,结果是不同的:
>>>Color.red
<Color.red: 1>
Run Code Online (Sandbox Code Playgroud)
我目前的应用程序是接受enum类型,我得到枚举的值value.value.当然,如果安装了错误的枚举,这将引发异常.
我该如何处理这个问题?
据猜测,您似乎拥有enum在 3.4 Enum 出现之前就存在的软件包。enum34如此命名是因为之前的包已经存在。
两者enum都enum34安装到同一位置,因此使它们共存并不容易 - 而且它会使您的代码难以分发,因为其中一个枚举将位于非标准位置。
一种可能性是使用virtual envs-- 然后您可以在venv.
| 归档时间: |
|
| 查看次数: |
3873 次 |
| 最近记录: |