Python: Le module enum

Le module enum est très pratique pour créer et utiliser des constantes dans des programmes python.

Dans l'exemple suivant, je crée une classe qui va me permettre de générer des constantes pour les codes HTTP à l'aide de la classe Enum du module enum.

Cette classe pourra ensuite être utilisée dans n'importe quel programme ayant besoin d'utiliser ces codes.

Pour l'exemple, j'ai utilisé que quelques codes.
La liste complète étant disponible ici.

from enum import Enum

class Status(Enum):
   HTTP_OK = 200
   HTTP_CREATED = 201
   HTTP_ACCEPTED = 202
   HTTP_NON_AUTHORITATIVE = 203
   HTTP_NO_CONTENT = 204
   HTTP_MULTIPLE_CHOICES = 300
   HTTP_MOVED_PERMANENTLY = 301
   HTTP_MOVED_TEMPORARILY = 302
   HTTP_BAD_REQUEST = 400
   HTTP_UNAUTHORIZED = 401
   HTTP_PAYMENT_REQUIRED = 402
   HTTP_FORBIDDEN = 403
   HTTP_NOT_FOUND = 404
   HTTP_METHOD_NOT_ALLOWED = 405
   HTTP_INTERNAL_SERVER_ERROR = 500
   HTTP_NOT_IMPLEMENTED = 501
   HTTP_BAD_GATEWAY = 502

J'ai donc créé une classe Status qui étend la classe Enum du module enum.

Pour créer les constantes, il suffit juste de créer des paires clés / valeurs.
Les valeurs peuvent être numériques ou des chaines de caractères.

Pour utiliser cette classe personnalisée, il suffit de procéder de cette manière.

Pour l'exemple, je pars du principe que la classe Status est enregistrée dans un fichier nommé Apache.py et que ce fichier est disponible dans un répertoire listé dans la variable path du module sys.

>>> from Apache import Status

>>> Status
<enum 'Status'>
>>> Status(200)
<Status.HTTP_OK: 200>
>>> Status['HTTP_UNAUTHORIZED']
<Status.HTTP_UNAUTHORIZED: 401>
>>> Status.HTTP_BAD_REQUEST
<Status.HTTP_BAD_REQUEST: 400>
>>> Status(200).value
200
>>> Status(200).name
'HTTP_OK'
>>> Status['HTTP_OK'].value
200

On voit bien que la classe Status étend le module enum.
Pour afficher la description (le nom de la constante correspondante) d'un code, il suffit d'appeler la classe avec le code entre parenthèses.
Si le code n'existe pas, une exception "ValueError" est levée.
On peut également afficher l'information à l'aide du nom de la constante entre crochets (comme un dictionnaire).
Les constantes sont accessibles directement via la classe Status comme n'importe quelles constantes de classes ordinaires.
Il est également très facile d'obtenir la valeur d'une constante et/ou son nom que ce soit à partir de sa valeur ou de son nom.

Etiquettes: 

Ajouter un commentaire

Filtered HTML

  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Tags HTML autorisés : <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Les lignes et les paragraphes vont à la ligne automatiquement.

Plain text

  • Aucune balise HTML autorisée.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
CAPTCHA
Cette question permet de s'assurer que vous êtes un utilisateur humain et non un logiciel automatisé de pollupostage.
CAPTCHA visuel
Entrez les caractères (sans espace) affichés dans l'image.