29

Many methods of implementing enums are shown in the answers to this question. However, PEP0435 is out now and describes how Enum and IntEnum will become official in Python 3.4.

My question is not about the advantages/disadvantages of particular ways of simulating enums in Python. Rather I'd like advice on the most forward-compatibile way for those of us still stuck in 2.X releases.

flufl.enum was originally going to be the reference implementation but was dropped due to members not being instances of the type (and of allowing subclasses with additional members at the same time). The latter wouldn't affect much day-to-day but perhaps the former would cause more issues?

Are there any libraries out there that more closely resemble what is being added to 3.4 and are compatible with 2.7+?

Community
  • 1
  • 1
ShawnFumo
  • 2,108
  • 1
  • 25
  • 14

1 Answers1

20

There is a backport of the PEP 435 enum module available on PyPI as enum34. The backport seems to be unofficial, however it is authored by Ethan Furman, who is a Python core committer and one of the co-authors of PEP 435.

The backport is declared compatible with Python 2.4 and greater. Of course, under Python 2 there are a few, relatively minor, differences in behaviour, but from my preliminary exploration under Pyhon 2.7, I'd say that the level of forward compatibility is quite high.

tawmas
  • 7,443
  • 3
  • 25
  • 24