2009-02-08 8 views
0

Dans mon script python, je suis en train d'analyser un fichier créé par l'utilisateur et, en général, il y aura des erreurs et il y a des cas où je préviens l'utilisateur d'être plus clair. Dans c je aurais une énumération comme eAssignBad, eAssignMismatch, eAssignmentSignMix (signe mélangé avec unsigned). Ensuite, je voudrais regarder la valeur jusqu'à imprimer une erreur ou un message d'avertissement. Je lie avoir le warningMsg dans un endroit et j'aime la lisibilité des noms plutôt que des valeurs littérales. Quel est un remplacement pythonique pour cela?remplacement pythonic pour enums

en double de: How can I represent an 'Enum' in Python?

+0

Vous voulez probablement juste un dict, mais c'est difficile à dire sans voir votre programme/fonction entier comme pseudocode. C et Python sont * très * différents, et le meilleur moyen d'y accomplir une tâche ne sera pas le même. – kquinn

+0

Dupliquer: http://stackoverflow.com/questions/36932/whats-the-best-way-to-implement-an-enum-in-python –

+0

Multi-dupliquer: http://stackoverflow.com/search?q = python + enum –

Répondre

4

Voici une des meilleures implémentations ENUM que j'ai trouvé jusqu'à présent: http://code.activestate.com/recipes/413486/

Mais, oserais-je demander, est-ce que vous avez besoin d'un enum?

Vous pouvez avoir un dict simple avec vos messages d'erreur et certaines constantes entières avec vos numéros d'erreur.

eAssignBad = 0 
eAssignMismatch = 1 
eAssignmentSignMix = 2 

eAssignErrors = { 
    eAssignBad: 'Bad assignment', 
    eAssignMismatch: 'Mismatched thingy', 
    eAssignmentSignMix: 'Bad sign mixing' 
} 
3

Vous pouvez essayer de faire un tas de classes d'exception (toutes les sous-classes d'exception, peut-être par une classe parente commune de votre propre). Chacun aurait un texte de message d'erreur approprié pour l'occasion ...