MyTetra Share
Делитесь знаниями!
Enum с дополнительными полями в Python
09.02.2019
18:28
Автор: br0ke
Текстовые метки: python, enum, enumeration, attribute, multiple, value, tuple
Раздел: Информационные технологии - Python

class TextEnum(enum.Enum):

"""Версия enum'а, в которой можно сохранять текстовые описания элементов.


Чтобы использовать, нужно отнаследоваться от этого класса, как от обычного :class:`enum.Enum`,

элементами которого будут тьюплы (значение, текстовое описание):


.. code:: python


class ExampleEnum(TextEnum):

FIRST = 1, 'Первый'


ExampleEnum.FIRST.name # 'FIRST'

ExampleEnum.FIRST.value # 1

ExampleEnum.FIRST.text # 'Первый'


"""


def __new__(cls, value: Any, text: str, *args, **kwargs) -> 'TextEnum':

"""Создает новый элемент enum'а, добавляя на него атрибут `text`.


:param value: значение, которое попадет в атрибут `value`

:param text: значение, которое попадет в атрибут `text`

:param args: остальные аргументы

:param kwargs: кваргументы

:return: новый элемент enum'а

"""

obj = object.__new__(cls) # type: ignore

obj._value_ = value

obj.text = text

return obj

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования