Подтвердить что ты не робот

Enum - получение значения enum при преобразовании строки

У меня есть следующее перечисление

from enum import Enum


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


print(D.x)

теперь напечатанное значение равно

D.x

вместо этого я хотел, чтобы значение перечисления было напечатано

1

Что можно сделать для достижения этой функциональности?

4b9b3361

Ответ 1

Вы печатаете объект перечисления. Используйте атрибут .value, если вы хотите просто распечатать это:

print(D.x.value)

Смотрите Программный доступ к элементам перечисления и разделу их атрибутов:

Если у вас есть член перечисления и ему нужно его имя или значение:

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

Вы можете добавить метод __str__ к вашему перечислению, если все, что вам нужно, - предоставить настраиваемое строковое представление:

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

    x = 1
    y = 2

Демо:

>>> 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

Ответ 2

Я реализовал доступ с помощью следующего

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

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

теперь я могу просто сделать

print(D.x), чтобы получить 1 в результате.

Вы также можете использовать self.name, если вы хотите напечатать x вместо 1.