Pythonで列挙型を実装する方法についていくつか質問がありました。ほとんどのソリューションは、最終的に次のようなものとほぼ同等になります。
class Animal:
DOG=1
CAT=2
他の人は列挙型を構築するより複雑な方法を提案していますが、すべてが言われ、行われると、最終的にはこの例のように見える傾向があります。
JavaとC#での経験に基づいて、このようなイディオムのさまざまな使用法を考えることができます。しかし、それはあまりPythonicではないようです。実際、Pythonに列挙型がない理由を誰かが尋ねるたびに、Pythonのような言語でコンパイル時の型の安全性を強制しようとする理由がないことについて、定型の応答で少しうめき声を上げる傾向があるようです。または、列挙型を必要とするデザインがPythonの悪臭である方法。
私の質問は、Pythonで列挙型を実装する方法ではなく、一般的に、Pythonの方法で列挙型に役立つ問題の解決策に人々がどのようにアプローチするかです。言い換えると、Java / C#ソリューションをPythonに移植せずに、可能な値の離散セットを持つデータ型を持つことに役立つ問題をどのように解決しますか。