A classe EnumField

A classe EnumField fornece definições para valores enum. Os campos enum podem ter valores predefinidos que são atrasados até que o tipo enum associado seja resolvido. Isto é necessário para suportar determinadas referências circulares. Por exemplo:

from protorpc import messages

class Message1(messages.Message):

    class Color(messages.Enum):
        RED = 1
        GREEN = 2
        BLUE = 3

    # Validate this field's default value when default is accessed.
    animal = messages.EnumField('Message2.Animal', 1, default='HORSE')

class Message2(messages.Message):

    class Animal(messages.Enum):
        DOG = 1
        CAT = 2
        HORSE = 3

    # This fields default value will be validated right away since Color is
    # already fully resolved.
    color = messages.EnumField(Message1.Color, 1, default='RED')

O EnumField é fornecido pelo módulo protorpc.messages.

Construtor

O construtor da classe EnumField é definido da seguinte forma:

class EnumField(enum_type, number, required, repeated, variant, default)

Fornece uma definição de campo para valores Enum.

Argumentos
enum_type
O tipo Enum de um campo. Tem de ser uma subclasse de Enum.
number
O número do campo. Tem de ser único por classe de mensagem.
obrigatório
Se este campo é obrigatório ou não. Exclusivo com o argumento repeated; não especifique repeated se usar required.
repetido
Se este campo é repetido ou não. Exclusivo com o argumento required; não especifique required se usar repeated.
variant
Especifica ainda mais o tipo de campo. Alguns tipos de campos são ainda mais restritos com base no formato de transmissão subjacente. A prática recomendada é usar o valor predefinido, mas os programadores podem usar este campo para declarar um campo de número inteiro como um número inteiro de 32 bits em comparação com o predefinido de 64 bits.
predefinição
Valor predefinido a usar para o campo se não for encontrado no fluxo.

Gera um FieldDefinitionError quando enum_type é inválido.

Propriedades da classe

A classe EnumField fornece as seguintes propriedades de classe:

type()
Tipo de enumeração usado para o campo.
default()
Predefinição para o campo enum. Se o valor predefinido não for resolvido, usa o tipo de enumeração como predefinição.

Métodos de instância

As instâncias EnumField têm o seguinte método:

validate_default_element(value)
Valida o elemento predefinido do campo Enum. Os campos de enumeração permitem a resolução atrasada dos valores predefinidos quando o tipo do campo não foi resolvido. O valor predefinido de um campo pode ser uma string ou um número inteiro. Se o tipo Enum do campo tiver sido resolvido, o valor predefinido é validado em função desse tipo.