【发布时间】:2018-04-26 17:45:29
【问题描述】:
我在一个项目中坚持使用 Python 2.7,并且我有几个 Enums 用于将 Python 框架 (OpenERP) 与旧框架集成。在 Python 2 中,默认为 Enums are not ordered:
>>> from enum import Enum
>>> class Color(Enum):
... RED = 1
... GREEN = 2
... BLUE = 3
...
>>> list(Color)
[<Color.BLUE: 3>, <Color.RED: 1>, <Color.GREEN: 2>]
如果顺序很重要,则必须手动添加_order_ = 'member1, member2, member3' 属性。
>>> class Color(Enum):
... _order_ = 'RED GREEN BLUE'
... RED = 1
... GREEN = 2
... BLUE = 3
...
>>> list(Color)
[<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]
这适用于较小的 Enums,但我有几个名称在 10 到 50 个之间,而且在添加/删除名称时,输入、读取或保持顺序实在是太多了。
还有其他选择吗?
【问题讨论】:
-
可以用 enum34 包吗?它已被向后移植到 Python 2.7。
-
@Sebastian:上面的例子是使用
enum34包。这并不明显,因为enum34安装为enum。
标签: python python-2.7 enums