A classe EnumField

A classe EnumField fornece definições para valores de enum. Os campos de enum podem ter valores padrão que são atrasados até que o tipo de enum associado seja resolvido. Isso é necessário para aceitar certas 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')

EnumField é fornecido pelo módulo protorpc.messages.

Construtor

O construtor da classe EnumField é definido assim:

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

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

Argumentos
enum_type
O tipo de Enum do campo. Precisa ser uma subclasse de Enum.
number
O número do campo. Precisa ser exclusivo por classe de mensagem.
required
Se o campo é obrigatório ou não. Mutuamente exclusivo com o argumento repeated. Não especifique repeated se usar required.
repeated
Se o campo é repetido ou não. Mutuamente exclusivo com o argumento required. Não especifique required se usar repeated.
variant
Especifica ainda mais o tipo de campo. Alguns tipos de campo são restritos ainda mais com base no formato wire subjacente. A prática recomendada é usar o valor padrão, mas os desenvolvedores podem usar este campo para declarar um campo de número inteiro como inteiro de 32 bits X o padrão de 64 bits.
padrão
Valor padrão a ser usado no campo se não for encontrado no stream.

Gera um FieldDefinitionError quando enum_type é inválido.

Propriedades da classe

A classe EnumField fornece as seguintes propriedades de classe:

type()
Tipo de Enum usado no campo.
default()
Padrão para o campo de enum. Caso o valor padrão não seja resolvido, usa o tipo Enum como o padrão.

Métodos de instância

Instâncias de EnumField têm o seguinte método:

validate_default_element(value)
Valida o elemento padrão do campo Enum. Os campos Enum permitem a resolução atrasada de valores padrão quando o tipo de campo não foi resolvido. O valor padrão de um campo pode ser uma string ou um número inteiro. Se o tipo Enum do campo foi resolvido, o valor padrão é validado em relação ao tipo.