Comment convertir int Enum en python?
À l'aide de la nouvelle Enum fonction (via backport enum34) avec python 2.7.6.
Donné la définition suivante, comment puis-je convertir un int correspondant à la valeur d'Enum?
from enum import Enum
class Fruit(Enum):
Apple = 4
Orange = 5
Pear = 6
Je sais que je peux fabriquer a la main une série de si-états pour faire la conversion, mais est-il facile pythonic moyen de convertir? En gros, je voudrais une fonction ConvertIntToFruit(int) renvoie une valeur d'enum.
Mon cas d'utilisation est que j'ai un fichier csv des dossiers où je suis en train de lire chaque enregistrement dans un objet. L'un des champs des fichiers de est un champ de type entier qui représente une énumération. Comme je suis le remplissage de l'objet que j'aimerais convertir en que le champ entier du fichier dans la valeur d'Enum dans l'objet.
Vous devez vous connecter pour publier un commentaire.
Vous "appel" les
Enum
classe:à son tour
5
enFruit.Orange
:De la L'accès par programme aux membres de l'énumération et de leurs attributs section de la documentation:
Dans une note connexe: à la carte d'une valeur de chaîne contenant le nom d'un membre enum, l'utilisation d'abonnement:
Fruit['Orange']
.convert
,coerce
, etcast
mais n'a pas touché quoi que ce soit. Ressemble à de la magie étaitaccess enum members by name, use item access
. Perfecto, merci beaucoup, va nettoyer mon code avec cette syntaxe."foobar" in Fruit.__members__
de test pour l'adhésion et même arracherFruit.get( 'foobar', Fruit.Orange )
pour obtenir que par défaut Enum saveur. Mon code est beaucoup plus simplifié en supprimant tous ces accessoires de recherche de échafaudages je me suis couchée plus tôt.Je pense que c'est en termes simples, est de convertir
int
valeur dansEnum
en appelantEnumType(int_value)
, après que l'accès à laname
de laEnum
objet:Ou comme une fonction: