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 especifiquerepeated
se usarrequired
. - repeated
- Se o campo é repetido ou não. Mutuamente exclusivo com o argumento
required
. Não especifiquerequired
se usarrepeated
. - 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.