enum - getting value of enum on string conversion
You are printing the enum object. Use the .value
attribute if you wanted just to print that:
print(D.x.value)
See the Programmatic access to enumeration members and their attributes section:
If you have an enum member and need its name or value:
>>>>>> member = Color.red>>> member.name'red'>>> member.value1
You could add a __str__
method to your enum, if all you wanted was to provide a custom string representation:
class D(Enum): def __str__(self): return str(self.value) x = 1 y = 2
Demo:
>>> 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
I implemented access using the following
class D(Enum): x = 1 y = 2 def __str__(self): return '%s' % self.value
now I can just do
print(D.x)
to get 1
as result.
You can also use self.name
in case you wanted to print x
instead of 1
.
The most straightforward dunder method to use is _repr_ instead of _str_ since it will also allow you to print it in that way also in lists.
class D(Enum): x = 1 y = 2 def __repr__(self): return self.valueprint([D.x,D.y])>>> [1, 2]