Les énumérations en Python
Cet article explique les énumérations en Python.
YouTube Video
Les énumérations en Python
Le module enum
de Python est une classe spéciale pour définir des constantes, améliorer la lisibilité et éviter les erreurs de code.
Qu'est-ce qu'un Enum
?
Enum
(abréviation de énumération) est une classe utilisée pour définir un ensemble de constantes nommées. Il est généralement utilisé pour regrouper des constantes liées. Par exemple, il convient pour représenter des couleurs, des jours de la semaine ou des directions.
Pourquoi utiliser Enum
?
Il y a plusieurs raisons d'utiliser Enum
.
- Amélioration de la lisibilité : Utiliser des constantes nommées rend le code plus intuitif.
- Prévention des erreurs : Cela évite les modifications ou l'utilisation incorrecte des valeurs constantes.
- Regroupement : Cela organise les constantes liées en une seule classe, représentant des données structurées.
Utilisation de base de Enum
Pour utiliser enum
, importez le module enum
et définissez une classe. Cette classe doit hériter de Enum
et définir les valeurs que vous voulez traiter comme des constantes.
Exemple basique 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
Dans cet exemple, nous définissons une classe Enum
appelée Color
avec trois valeurs. Chaque nom est accessible via l'attribut name
, et sa valeur associée est accessible via l'attribut value
.
Comparer des Enums
Les membres d'un Enum
peuvent être comparés soit par leur nom, soit par leur valeur. Vous pouvez utiliser l'opérateur is
ou l'opérateur ==
pour vérifier l'identité et l'égalité.
Exemple de comparaison
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
Ici, des comparaisons d'Enum
utilisant ==
et is
sont démontrées. L'Enum
est conçu pour comparer correctement les objets ayant les mêmes noms et valeurs.
Attribution automatique de valeurs avec auto()
Si vous souhaitez attribuer automatiquement des valeurs aux membres d'Enum
, vous pouvez utiliser enum.auto()
. auto()
permet à Python d'attribuer automatiquement des valeurs, supprimant ainsi le besoin de spécifications manuelles par les développeurs.
Exemple 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
Dans cet exemple, l'utilisation de auto()
supprime la nécessité de spécifier explicitement les valeurs, rendant le code plus concis.
Attribution de plusieurs valeurs aux membres d'Enum
Les membres d'Enum
peuvent également contenir plusieurs valeurs, telles que des tuples. Cela permet à chaque membre de contenir des informations supplémentaires connexes.
Exemple utilisant des tuples
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
Dans cet exemple, les membres de la classe Status
ont chacun deux valeurs, représentant l'état et la description. Cela est utile lorsque vous souhaitez associer plusieurs informations à un membre d'Enum
.
Utilisation d'Enum
comme drapeaux
Le module enum
de Python inclut une classe Flag
qui peut être utilisée comme des drapeaux binaires. L'utilisation de Flag
permet de gérer plusieurs états en combinaison.
Exemple 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
Dans cet exemple, des opérations au niveau des bits sont utilisées pour combiner plusieurs permissions. L'utilisation de Flag
permet de gérer plusieurs états de manière succincte.
Points à garder à l'esprit lors de l'utilisation d'Enum
Immutabilité d'Enum
Les membres d'Enum
sont immuables. Une fois définis, leurs noms ou valeurs ne peuvent pas être modifiés. C'est une caractéristique importante pour maintenir la cohérence en tant que 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.
Interdiction des membres dupliqués
Les membres de Enum
doivent avoir des noms et des valeurs uniques. Même lorsque les valeurs en double sont autorisées, Python privilégie automatiquement le premier membre.
Résumé
Le module enum
de Python est un outil très utile pour regrouper des ensembles de constantes, améliorer la lisibilité et maintenir la cohérence du code. Une variété d'utilisations est possible, allant de l'utilisation de base à l'attribution automatique de valeurs avec auto()
, ainsi qu'à l'utilisation comme drapeaux binaires.
Comprendre et maîtriser correctement enum
peut améliorer la qualité du code et aider à prévenir les erreurs.
Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.