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 especifiquerepeated
se usarrequired
. - repetido
- Se este campo é repetido ou não. Exclusivo com o argumento
required
; não especifiquerequired
se usarrepeated
. - 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.