29

此问题的答案中显示了许多实现枚举的方法。但是,PEP0435现已发布,并描述了 Enum 和 IntEnum 将如何在 Python 3.4 中成为正式版本。

我的问题不是关于在 Python 中模拟枚举的特定方法的优缺点。相反,我想为我们这些仍然停留在 2.X 版本中的人提供有关最前向兼容方式的建议。

flufl.enum 最初将是参考实现,但由于成员不是该类型的实例(并且允许同时具有其他成员的子类)而被删除。后者不会对日常产生太大影响,但也许前者会引起更多问题?

是否有任何库更类似于添加到 3.4 并与 2.7+ 兼容的库?

4

1 回答 1

20

PyPI 上有一个可用的 PEP 435 枚举模块的后向端口,即enum34。反向移植似乎是非官方的,但它是由 Ethan Furman 编写的,他是 Python 核心提交者,也是 PEP 435 的共同作者之一。

向后端口声明与 Python 2.4 及更高版本兼容。当然,在 Python 2 下,在行为上存在一些相对较小的差异,但从我在 Pyhon 2.7 下的初步探索来看,我会说前向兼容性水平相当高。

于 2014-01-27T23:51:51.427 回答