Clase EnumField

La clase EnumField ofrece definiciones para los valores de Enum. Es posible que los campos de Enum tengan valores predeterminados que solo se apliquen cuando el tipo de Enum asociado quede resuelto. Esto es necesario para permitir algunas referencias circulares. Por ejemplo:

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 lo proporciona el módulo protorpc.messages.

Constructor

El constructor de la clase EnumField se define a continuación:

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

Proporciona una definición de campo para los valores de Enum.

Argumentos
enum_type
Tipo de enumeración de un campo. Debe ser una subclase de Enum.
number
Número del campo. Debe ser exclusivo en cada clase de mensaje.
obligatorio
Indica si este campo es obligatorio o no. Es mutuamente exclusivo con el argumento repeated. No especifiques repeated si usas required.
repetida
Indica si este campo se repite o no. Es mutuamente exclusivo con el argumento required. No especifiques required si usas repeated.
variant
Especifica el tipo de campo. Algunos tipos de campo se encuentran más limitados dado su formato abreviado subyacente. Lo recomendable sería utilizar el valor predeterminado, aunque los desarrolladores pueden usar este campo para declarar un número entero de 32 bits en lugar de uno de 64 bits, que es la opción predeterminada.
predeterminado
Valor predeterminado que se usará en el campo si no se encuentra en el flujo.

Genera un error FieldDefinitionError cuando enum_type no es válido.

Propiedades de clase

La clase EnumField proporciona las siguientes propiedades de clase:

type()
Tipo de enum que se usa en el campo.
default()
Valor predeterminado del campo de enumeración. Si el valor predeterminado no se resuelve, se usa el enum type como valor predeterminado.

Métodos de instancia

Las instancias de EnumField siguen este método:

validate_default_element(value)
Valida el elemento predeterminado del campo Enum. Los campos de Enum permiten la resolución aplazada de los valores predeterminados cuando el tipo de campo aún no se ha resuelto. El valor predeterminado de un campo puede estar en formato de cadena o de número entero. Si el tipo de Enum del campo se ha resuelto, se valida el valor predeterminado con respecto a ese tipo.