You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2中是否有更简便的Enum成员排序方法?

Python 2.7 Enum 无序问题的解决方案(适配OpenERP集成场景)

我最近刚好处理过类似的场景——在Python 2.7环境下用Enum做OpenERP和遗留框架的集成,确实踩过Enum默认无序的坑。

问题复现

默认情况下,Python 2.7中的Enum成员遍历顺序和定义顺序完全不一致:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(list(Color))
# 输出: [<Color.BLUE: 3>, <Color.RED: 1>, <Color.GREEN: 2>]

这种乱序的情况对需要严格遵循定义顺序的集成场景来说,很容易导致数据映射、接口交互出现异常。

解决办法

如果排序至关重要,只需在Enum类中手动添加_order_属性,按定义顺序列出成员名称(用逗号分隔)即可:

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3
    _order_ = 'RED, GREEN, BLUE'  # 强制指定遍历顺序

print(list(Color))
# 输出: [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]

这个_order_属性是Python 2.7版本Enum的专属特性,专门用来修正默认的无序问题,完全适配你需要严格顺序的框架集成需求。

内容的提问来源于stack exchange,提问作者Ethan Furman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:48:37