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) # 1En 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) # TrueAquí 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) # 3En 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 userEn 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) # FalseEn 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.