Cuando empecé a programar en Python, gestionar constantes y valores simbólicos en mi código era un dolor de cabeza. Usaba simples variables, listas o diccionarios para representar estados y opciones, pero a medida que los proyectos crecían, todo se volvía un caos. Un día, un compañero me recomendó usar import enum, y fue un antes y un después en mi forma de escribir código.
Si alguna vez has lidiado con valores que representan estados o categorías en tu código y has terminado con estructuras desordenadas y difíciles de mantener, sabes de lo que te hablo. En este artículo, te mostraré cómo import enum puede ayudarte a escribir código más limpio, estructurado y fácil de depurar.
¿Qué es import enum y por qué deberías usarlo?
En términos simples, import enum en Python te permite definir enumeraciones, que son conjuntos de nombres simbólicos asociados a valores únicos. Esto facilita la lectura y mantenimiento del código, evitando errores derivados del uso de valores mágicos.
Por ejemplo, en lugar de usar números enteros o cadenas para representar estados, puedes hacer esto:
from enum import Enum
class Estado(Enum):
INICIADO = 1
EN_PROGRESO = 2
FINALIZADO = 3
Ahora, en lugar de comparar valores enteros o cadenas dispersas en tu código, puedes hacer algo mucho más legible:
estado_actual = Estado.EN_PROGRESO
if estado_actual == Estado.EN_PROGRESO:
print("El proceso está en curso")
Esto no solo mejora la claridad del código, sino que también evita errores comunes, como comparar valores incorrectos o no saber exactamente qué representa cada número.
¿Cómo crear y usar enumeraciones en Python?
🔴 ¿Quieres Aprender a Programar con Python? 🔴
Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semanaLas enumeraciones en Python se pueden definir utilizando la clase base Enum. Veamos las formas más comunes de hacerlo.
Definir una enumeración con la sintaxis de clase
El método más habitual para definir una enumeración es crear una clase que herede de Enum y definir los valores dentro de la clase.
from enum import Enum
class Color(Enum):
ROJO = 1
VERDE = 2
AZUL = 3
Cada elemento dentro de la enumeración tiene un nombre y un valor único. Puedes acceder a ellos de la siguiente forma:
print(Color.ROJO) # Color.ROJO
print(Color.ROJO.name) # ROJO
print(Color.ROJO.value) # 1
Crear enumeraciones con la sintaxis funcional
También es posible crear enumeraciones de forma dinámica usando la función Enum.
from enum import Enum
Color = Enum('Color', [('ROJO', 1), ('VERDE', 2), ('AZUL', 3)])
print(Color.ROJO) # Color.ROJO
Aunque este método es menos común, puede ser útil si necesitas definir enumeraciones de manera programática.
Tipos de enumeraciones en Python
Python proporciona diferentes tipos de enumeraciones para distintos casos de uso.
- IntEnum: Si necesitas que los valores de la enumeración sean enteros y compatibles con operaciones matemáticas, puedes usar IntEnum del siguiente modo:
from enum import IntEnum
class Estado(IntEnum):
INICIADO = 1
EN_PROGRESO = 2
FINALIZADO = 3
print(Estado.INICIADO + 1) # 2
- StrEnum: Para enumeraciones basadas en cadenas, puedes usar StrEnum (a partir de Python 3.11):
from enum import StrEnum
class Opcion(StrEnum):
SI = "sí"
NO = "no"
QUIZAS = "quizás"
print(Opcion.SI) # SI
- Flag e IntFlag
Si necesitas combinaciones de valores con operaciones bit a bit, Flag e IntFlag son la mejor opción.
from enum import Flag, auto
class Permiso(Flag):
LECTURA = auto()
ESCRITURA = auto()
EJECUCION = auto()
permiso_usuario = Permiso.LECTURA | Permiso.ESCRITURA
print(Permiso.LECTURA in permiso_usuario) # True
print(Permiso.EJECUCION in permiso_usuario) # False
Recomendaciones para usar import enum en Python
Para aprovechar al máximo import enum, sigue estas recomendaciones:
- Usa nombres en mayúsculas para los miembros de la enumeración, así mantienes coherencia con las convenciones de Python.
- Si necesitas enumeraciones que funcionen como enteros o cadenas en operaciones matemáticas o de comparación, usa IntEnum o StrEnum.
- Evita cambiar los valores de las enumeraciones después de su definición, ya que pueden afectar la integridad del código.
- Si necesitas asegurarte de que cada valor sea único, usa el decorador unique.
from enum import Enum, unique
@unique
class Estado(Enum):
INICIADO = 1
EN_PROGRESO = 2
FINALIZADO = 3
Esto evitará que se asignen valores duplicados dentro de la enumeración.
Saber cómo usar import enum es solo una de las muchas habilidades que necesitas para escribir código Python eficiente y escalable. Si quieres llevar tu conocimiento al siguiente nivel y transformar tu vida con una carrera en tecnología, nuestro Bootcamp en programación desde cero de KeepCoding es para ti. En poco tiempo, te convertirás en un profesional del desarrollo y estarás listo para trabajar en un sector con alta demanda, salarios competitivos y estabilidad laboral. No esperes más y únete a la revolución tecnológica.