Ha habido algunas preguntas sobre cómo implementar enumeraciones en Python. La mayoría de las soluciones terminan siendo más o menos equivalente a algo como esto:Diseño pitónico sin enums
class Animal:
DOG=1
CAT=2
Otros tienen sugerir formas más complicadas de la construcción de las enumeraciones, pero la ultimatly tienden a parecer a este ejemplo, cuando todo está dicho y hecho.
Basado en mi experiencia en Java y C#, puedo pensar en todo tipo de usos para este tipo de modismo. Sin embargo, no parece ser muy pitónico. De hecho, parece que cada vez que alguien pregunta por qué no hay enumeraciones en Python, tiendes a soltar un gruñido con respuestas enlatadas sobre cómo no hay razón para intentar aplicar la seguridad del tipo de tiempo de compilación en un lenguaje como Python. o cómo los diseños que requieren enumeraciones son malos olores en Python.
Mi pregunta no es cómo implementar enumeraciones en Python, sino cómo en general las personas abordan las soluciones a los problemas que se prestan a las enumeraciones de una manera pitonica. En otras palabras, ¿cómo resolverías un problema que se presta a tener un tipo de datos con un conjunto discreto de valores posibles sin transferir tu solución Java/C# a Python?
No veo por qué el ejemplo que dio es antiétónico. Y si estuviera implementando una máquina de estado, aprovecharía que las funciones son objetos y definiría mis estados como funciones. –
No sé si hay algo particularmente malo sobre cómo se implementó la enumeración, pero me da la sensación de que algunas personas en la comunidad de Python consideran que las soluciones que requieren enumeraciones en primer lugar no son pionónicas. ¡Sin embargo, su sugerencia de que una máquina de estados se implemente usando funciones de primera clase como estado es un buen comienzo para una respuesta! – jlund3