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 especifiquesrepeated
si usasrequired
. - repetida
- Indica si este campo se repite o no. Es mutuamente exclusivo con el argumento
required
. No especifiquesrequired
si usasrepeated
. - 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.