Clase EnumField

La clase EnumField proporciona definiciones para los valores enum. Los campos Enum pueden tener valores predeterminados que se retrasan hasta que el tipo enum asociado se resuelve. Esto es necesario para admitir ciertas 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')

El módulo protorpc.messages proporciona EnumField.

Constructor

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

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

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

Argumentos
enum_type
El tipo Enum para un campo. Debe ser una subclase de Enum.
number
El número del campo. Debe ser único por clase de mensaje.
required
Indica si el campo es obligatorio o no. Este campo y repeated son mutuamente excluyentes; no especifiques repeated si usas required.
repeated
Indica si el campo se repite o no. Este campo y required son mutuamente excluyentes; no especifiques required si usas repeated.
variant
Especifica aún más el tipo de campo. Algunos tipos de campo se restringen con base en el formato con cable subyacente. Se recomienda usar el valor predeterminado, pero los desarrolladores pueden usar este campo para declarar un campo de número entero como uno de 32 bits frente al predeterminado de 64 bits.
predeterminada
El valor predeterminado que se usará en el campo si no se encuentra en transmisión.

Genera un FieldDefinitionError cuando enum_type no es válido.

Propiedades de clase

La clase EnumField proporciona las propiedades de clase siguientes:

type()
El tipo Enum que se usa para el campo.
default()
El valor predeterminado para el campo Enum. Si el valor no está resuelto, se usa el tipo Enum como el predeterminado.

Métodos de instancia

Las instancias EnumField tienen el método siguiente:

validate_default_element(value)
Valida el elemento predeterminado del campo Enum. Este permite la resolución retrasada de los valores predeterminados cuando el tipo del campo no se ha resuelto. El valor predeterminado de un campo puede ser una string o un número entero. Si el tipo Enum del campo se resolvió, el valor predeterminado se valida en función de ese tipo.