列挙型を実装する多くの方法が、this questionの回答に示されています。しかし、PEP0435が出てきており、EnumとIntEnumがPython 3.4でどのように正式になるのかを説明しています。将来の互換性のある列挙型は2.7ですか?
私の質問は、Pythonで列挙型をシミュレートする特定の方法の長所と短所に関するものではありません。むしろ私はまだ2.Xのリリースで立ち往生している人たちのために、最も先進的な方法についてアドバイスをしたいと思います。
flufl.enumはもともとリファレンス実装になりましたが、メンバーがそのタイプのインスタンスではなく(追加のメンバーを同時に含むサブクラスを許可するため)、削除されました。後者は多くの日々のことに影響を与えませんが、おそらく前者はより多くの問題を引き起こすでしょうか?
3.4に追加されているものに近いライブラリがあり、2.7+と互換性がありますか?
これは問題ではありません。あなたの手巻きの列挙体を使用することは、 "公式の"列挙型が解放されたときに壊れることはありません。さらに、enumを使用しないでください。これはCではありません。 – Marcin
3.4の実装は、メタクラス上の新しい '__prepare__'関数に依存しているため、2.7に戻すことは難しいでしょうが、バックポートはまだ可能です。あなたの手巻きのものにぶつかってください。彼らは仕事を続けますが、正式なモジュールのすべての利点を持っているわけではありません。 –
@JoachimSauer言語が成長するにつれて、それほど適応しにくい人が増え、Cのような構成要素の構成要素が増えます。 – Marcin