Comment créer des énumérations dans Python

Comment créer des énumérations dans Python
Cet article couvrira un guide sur l'utilisation d'objets «enum» dans Python. Une énumération ou une classe «énumération» vous permet de créer des constantes uniques dont la valeur reste inchangée dans les programmes et applications Python. Tous les échantillons de code de cet article sont testés avec Python 3.9.5 sur Ubuntu 21.04.

À propos des énumérations de Python

Comme indiqué précédemment, les énuméres sont des objets ayant des valeurs constantes. Ils ont des noms symboliques ou représentatifs attachés à leurs valeurs respectives. Ils sont d'une manière similaire à d'autres variables Python, mais viennent avec des fonctionnalités uniques comme les objets de type type et le regroupement. Dans Python, les énuméraires sont toujours représentés en utilisant des caractères supérieurs pour indiquer qu'ils ont des valeurs constantes. Les énumérations sont spécialement utiles dans les cas où vous avez une gamme prédéfinie de valeurs possibles et que vous devez choisir et vous référer à des choix limités dans votre logique de programme. L'utilisation des énumérations à Python peut être mieux comprise à travers des exemples. Certains d'entre eux sont expliqués ci-dessous.

Créer des énumérations

Vous pouvez créer des enums en construisant une nouvelle classe qui hérite de la classe Enum elle-même. Jetez un œil à l'échantillon de code ci-dessous:

à partir de l'énumération de l'énumération
Couleur de classe (enum):
Jaune = 1
Noir = 2
Blanc = 3
Violet = 4
Orange = 5
Imprimer (couleur (1))
imprimer (rep (couleur (1)))
imprimer (couleur.JAUNE)
Imprimer (Type (couleur.JAUNE))
imprimer (couleur.JAUNE.nom)
imprimer (couleur.JAUNE.valeur)

La première instruction importe la classe Enum à partir du module ENUM. Ensuite, une nouvelle classe appelée «Color» est construite en héritant de la classe d'énumération. Certaines variables (membres de l'énum) sont ensuite créées avec des valeurs constantes. Ces variables représentent cinq choix possibles. Les prochaines instructions d'impression montrent comment vous pouvez accéder à ces énumérations, leurs noms et valeurs. Ces déclarations sont explicites. Pour accéder à un éventuel choix d'énumération, vous pouvez utiliser la notation de points ou fournir une valeur connue comme un argument à la classe. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Couleur.JAUNE
Couleur.JAUNE
JAUNE
1

Comme vous pouvez le voir dans la sortie, il existe une variété de façons d'accéder aux membres de l'énumération. Notez que l'appel de la fonction d'impression sur une enum renvoie sa forme de chaîne lisible par l'homme et non sa valeur. Donc, se référant à la couleur.Le jaune retournera la couleur.Jaune et non 1.

Itérer à travers les énumérations

Vous pouvez itérer via un objet de type énum et obtenir ses membres en utilisant des instructions de boucle.

à partir de l'énumération de l'énumération
Couleur de classe (enum):
Jaune = 1
Noir = 2
Blanc = 3
Violet = 4
Orange = 5
pour C en couleur:
imprimer (c.nom, c.valeur)

À l'aide de la variable «C», vous pouvez accéder à chaque membre de l'objet de type d'énumération de couleur. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante.

Jaune 1
Noir 2
Blanc 3
Violet 4
Orange 5

Le nom des membres de l'énume doit être unique mais les valeurs en double sont autorisées

Vous ne pouvez pas créer deux membres de l'énum avec le même nom mais leurs valeurs n'ont pas de telles restrictions. L'exemple de code suivant lancera une erreur car il y a deux membres de l'énum avec les mêmes noms.

à partir de l'énumération de l'énumération
Couleur de classe (enum):
Noir = 1
Noir = 2
Blanc = 3
Violet = 4
Orange = 5

Après avoir exécuté l'exemple de code ci-dessus, vous devez obtenir une erreur similaire à celle:

Fichier "/ usr / lib / python3.9 / Enum.py ", ligne 133, dans __setItem__
augmenter TypeError ('Tentré de réutiliser la clé:% R'% clé)
TypeError: Essayé de réutiliser la clé: «noir»

Comme vous pouvez le voir dans la sortie, les noms en double ne sont pas autorisés pour les membres de l'Enum. Cependant, le code suivant est valide lorsque deux membres de l'énum ont les mêmes valeurs.

à partir de l'énumération de l'énumération
Couleur de classe (enum):
Jaune = 2
Noir = 2
Blanc = 3
Violet = 4
Orange = 5

Si vous souhaitez également forcer des valeurs uniques pour les membres de l'énum avec leurs noms, vous pouvez utiliser le décorateur «unique» pour empêcher les valeurs en double.

à partir de l'énumération de l'énumération, unique
@unique
Couleur de classe (enum):
Jaune = 2
Noir = 2
Blanc = 3
Violet = 4
Orange = 5

Le décorateur «@Unique» force les objets de type énumér. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Fichier "/ usr / lib / python3.9 / Enum.py ", ligne 989, en unique
augmenter ValueError ('Valeurs en double trouvées dans% R:% S'%
ValueError: Valeurs en double trouvées dans: Black -> Jaune

Attribuez automatiquement des valeurs aux membres de l'énumération

Si les valeurs des membres de l'Enum n'ont pas d'importance pour vous, vous pouvez utiliser la méthode «Auto» disponible dans le module ENUM pour attribuer automatiquement des nombres séquentiels aux membres de l'énumération.

à partir de Enum Import Enum, Auto
Couleur de classe (enum):
Jaune = auto ()
Noir = auto ()
Blanc = auto ()
Purple = Auto ()
Orange = Auto ()
pour C en couleur:
imprimer (c.nom, c.valeur)

Comme vous pouvez le voir dans l'exemple de code abouti, au lieu d'attribuer explicitement certaines valeurs aux membres de l'énumération, la fonction automatique a été appelée lors de la création de chaque membre. La méthode automatique attribue toujours 1 comme la première valeur. Après avoir exécuté l'échantillon de code ci-dessus, vous devriez obtenir la sortie suivante:

Jaune 1
Noir 2
Blanc 3
Violet 4
Orange 5

Conclusion

Les objets de type enums en python vous permettent de créer des variables de style constant ayant des noms uniques. Ces variables, généralement appelées membres d'Enum, peuvent être représentées par des cordes lisibles par l'homme. Les énumérations sont particulièrement utiles lorsque vous souhaitez choisir un ou plusieurs choix dans un groupe d'options limitées.