Перечисления(Enums)

ПеречисленияEnumэто специальный типGraphQL, который представляет набор сивольных имен, связанных с уникальными постоянными значениями.

Определение

Вы можете создатьEnum, используя классы:

import graphene

class Episode(graphene.Enum):
    NEWHOPE = 4
    EMPIRE = 5
    JEDI = 6

Но так же используя сущность Enum:

Episode = graphene.Enum('Episode', [('NEWHOPE', 4), ('EMPIRE', 5), ('JEDI', 6)])

Описание значений

Существует возможность добавить описание к значению Enum , для этого необходимо определить description свойство:

class Episode(graphene.Enum):
    NEWHOPE = 4
    EMPIRE = 5
    JEDI = 6

    @property
    def description(self):
        if self == Episode.NEWHOPE:
            return 'New Hope Episode'
        return 'Other episode'

Использование с Python Enums

В ситуации, когда Enums уже определны возможно повторное их использование с помощью функции Enum.from_enum.

graphene.Enum.from_enum(AlreadyExistingPyEnum)

Enum.from_enum поддерживает description и deprecation_reasonлямбда-функции, так что вы можете добавлять описания к Вашему Enum без изменений оригинала:

graphene.Enum.from_enum(AlreadyExistingPyEnum, description=lambda value: return 'foo' if value == AlreadyExistingPyEnum.Foo else 'bar')

Примечание

graphene.Enum использует внутри себя enum.Enum (или его backport, если enum.Enum не доступен) и может использоваться точно также, за исключением методов getter-ов.

В имплементации Python Enum Вы можете получить доступ к элементу путем инициализации Enum :

from enum import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

assert Color(1) == Color.RED

Однако, в GrapheneEnumВам необходимо вызвать get метод для этого:

from graphene import Enum
class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

assert Color.get(1) == Color.RED

results matching ""

    No results matching ""