Enumeraciones en Python
Este artículo explica las enumeraciones en Python.
YouTube Video
Enumeraciones en Python
El enum
de Python es una clase especial para definir constantes, mejorar la legibilidad y ayudar a prevenir errores de codificación.
¿Qué es un Enum
?
Enum
(abreviatura de enumeración) es una clase usada para definir un conjunto de constantes con nombre. Normalmente se utiliza para agrupar constantes relacionadas. Por ejemplo, es adecuado para representar colores, días de la semana o direcciones.
¿Por qué usar Enum
?
Hay varias razones para usar Enum
.
- Legibilidad mejorada: Usar constantes con nombre hace que el código sea más intuitivo.
- Prevención de errores: Evita cambios o mal uso de los valores constantes.
- Agrupación: Organiza constantes relacionadas en una sola clase, representando datos estructurados.
Uso básico de Enum
Para usar enum
, importa el módulo enum
y define una clase. La clase debe heredar de Enum
y definir los valores que deseas tratar como constantes.
Ejemplo básico de Enum
1from enum import Enum
2
3class Color(Enum):
4 RED = 1
5 GREEN = 2
6 BLUE = 3
7
8# Usage of Enum
9print(Color.RED) # Color.RED
10print(Color.RED.name) # RED
11print(Color.RED.value) # 1
En este ejemplo, definimos una clase Enum
llamada Color
con tres valores. Cada nombre puede ser accedido a través del atributo name
y su valor asociado mediante el atributo value
.
Comparación de Enums
Los miembros de Enum
pueden ser comparados por nombre o por valor. Puedes usar el operador is
o el operador ==
para verificar identidad e igualdad.
Ejemplo de comparación
1from enum import Enum
2
3class Direction(Enum):
4 NORTH = 1
5 SOUTH = 2
6 EAST = 3
7 WEST = 4
8
9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH) # False
11print(Direction.NORTH == Direction.NORTH) # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH) # False
15print(Direction.NORTH is Direction.NORTH) # True
Aquí se demuestran las comparaciones de Enum
utilizando ==
e is
. Enum
está diseñado para comparar correctamente objetos con los mismos nombres y valores.
Asignación automática de valores con auto()
Si deseas asignar valores automáticamente a los miembros de Enum
, puedes usar enum.auto()
. auto()
permite que Python asigne valores automáticamente, eliminando la necesidad de especificación manual por parte de los desarrolladores.
Ejemplo de auto()
1from enum import Enum, auto
2
3class Animal(Enum):
4 DOG = auto()
5 CAT = auto()
6 MOUSE = auto()
7
8# Check the values of Enum
9print(Animal.DOG.value) # 1
10print(Animal.CAT.value) # 2
11print(Animal.MOUSE.value) # 3
En este ejemplo, usar auto()
elimina la necesidad de especificar valores explícitamente, haciendo el código más conciso.
Asignación de múltiples valores a los miembros de Enum
Los miembros de Enum
también pueden tener múltiples valores, como tuplas. Esto permite que cada miembro contenga información adicional relacionada.
Ejemplo usando tuplas
1from enum import Enum
2
3class Status(Enum):
4 ACTIVE = (1, 'Active user')
5 INACTIVE = (2, 'Inactive user')
6 SUSPENDED = (3, 'Suspended user')
7
8# Accessing Enum members
9print(Status.ACTIVE.name) # ACTIVE
10print(Status.ACTIVE.value) # (1, 'Active user')
11print(Status.ACTIVE.value[1]) # Active user
En este ejemplo, los miembros de la clase Status
tienen dos valores cada uno, que representan el estado y la descripción. Esto es útil cuando deseas asociar múltiples piezas de información con un miembro de Enum
.
Usar Enum
como banderas
El enum
de Python incluye una clase Flag
que puede usarse como banderas de bits. Usar Flag
te permite gestionar múltiples estados en combinación.
Ejemplo de Flag
1from enum import Flag, auto
2
3class Permission(Flag):
4 READ = auto()
5 WRITE = auto()
6 EXECUTE = auto()
7
8# Combining flags
9permission = Permission.READ | Permission.WRITE
10print(permission) # Permission.READ|WRITE
11print(Permission.EXECUTE in permission) # False
En este ejemplo, se utilizan operaciones a nivel de bits para combinar múltiples permisos. Usar Flag
te permite gestionar múltiples estados de manera concisa.
Puntos a tener en cuenta al usar Enum
Inmutabilidad de Enum
Los miembros de Enum
son inmutables. Una vez definidos, sus nombres o valores no se pueden cambiar. Esta es una característica importante para mantener la consistencia como constantes.
1from enum import Enum
2
3class Days(Enum):
4 MONDAY = 1
5 TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3 # AttributeError: Cannot reassign members.
Prohibición de miembros duplicados
Los miembros de Enum
deben tener nombres y valores únicos. Incluso cuando se permiten valores duplicados, Python automáticamente da prioridad al primer miembro.
Resumen
El módulo enum
de Python es una herramienta muy útil para agrupar conjuntos de constantes, mejorar la legibilidad y mantener la consistencia del código. Son posibles varios usos, desde el uso básico hasta la asignación automática de valores con auto()
, así como el uso como banderas de bits.
Entender y dominar correctamente enum
puede mejorar la calidad del código y ayudar a prevenir errores.
Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.