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 especifiquesrepeated
si usasrequired
. - repeated
- Indica si el campo se repite o no. Este campo y
required
son mutuamente excluyentes; no especifiquesrequired
si usasrepeated
. - 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.