web-dev-qa-db-fra.com

enum - Obtenir la valeur d'enum sur la conversion de chaîne

J'ai défini l'énumération suivante

from enum import Enum


class D(Enum):
    x = 1
    y = 2


print(D.x)

maintenant la valeur imprimée est

D.x

à la place, je voulais que la valeur de l'énum soit imprimée

1

Que peut-on faire pour réaliser cette fonctionnalité?

63
Vaibhav Mishra

Vous imprimez l’objet enum . Utilisez le .value attribut si vous vouliez simplement imprimer cela:

print(D.x.value)

Voir la section Accès programmatique aux membres de l'énumération et à leurs attributs ) :

Si vous avez un membre enum et avez besoin de son nom ou de sa valeur:

>>>
>>> member = Color.red
>>> member.name
'red'
>>> member.value
1

Vous pouvez ajouter un __str__ méthode pour votre enum, si tout ce que vous vouliez était de fournir une représentation de chaîne personnalisée:

class D(Enum):
    def __str__(self):
        return str(self.value)

    x = 1
    y = 2

Démo:

>>> from enum import Enum
>>> class D(Enum):
...     def __str__(self):
...         return str(self.value)
...     x = 1
...     y = 2
... 
>>> D.x
<D.x: 1>
>>> print(D.x)
1
119
Martijn Pieters

J'ai implémenté l'accès en utilisant les éléments suivants

class D(Enum):
    x = 1
    y = 2

    def __str__(self):
        return '%s' % self.value

maintenant je peux juste faire

print(D.x) pour obtenir 1 comme résultat.

Vous pouvez également utiliser self.name Si vous souhaitez imprimer x au lieu de 1.

4
Vaibhav Mishra