La classe EnumField fornisce definizioni per i valori enum. I campi enum potrebbero avere valori predefiniti che vengono ritardati finché il tipo enum associato non viene risolto. Ciò è necessario per supportare determinati riferimenti circolari. Ad esempio:
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 è fornito dal modulo protorpc.messages.
Costruttore
Il costruttore della classe EnumField è definito come segue:
- class EnumField(enum_type, number, required, repeated, variant, default)
-
Fornisce una definizione di campo per i valori Enum.
Argomenti- enum_type
- Il tipo Enum per un campo. Deve essere una sottoclasse di Enum.
- number
- Il numero del campo. Deve essere univoco per classe di messaggi.
- obbligatorio
- Indica se questo campo è obbligatorio o meno. Si esclude a vicenda con l'argomento
repeated; non specificarerepeatedse utilizzirequired. - ripetuto
- Indica se questo campo è ripetuto o meno. Si esclude a vicenda con l'argomento
required; non specificarerequiredse utilizzirepeated. - variante
- Specifica ulteriormente il tipo di campo. Alcuni tipi di campi sono ulteriormente limitati in base al formato di trasmissione sottostante. La best practice è utilizzare il valore predefinito, ma gli sviluppatori possono utilizzare questo campo per dichiarare un campo intero come intero a 32 bit anziché a 64 bit.
- predefinito
- Valore predefinito da utilizzare per il campo se non viene trovato nel flusso.
Genera un FieldDefinitionError quando
enum_typenon è valido.
Proprietà della classe
La classe EnumField fornisce le seguenti proprietà della classe:
- type()
- Tipo di enumerazione utilizzato per il campo.
- default()
- Valore predefinito per il campo enum. Se il valore predefinito non viene risolto, utilizza Enum type come valore predefinito.
Metodi dell'istanza
Le istanze EnumField hanno il seguente metodo:
- validate_default_element(value)
- Valida l'elemento predefinito del campo Enum. I campi enum consentono la risoluzione ritardata dei valori predefiniti quando il tipo di campo non è stato risolto. Il valore predefinito di un campo può essere una stringa o un numero intero. Se il tipo Enum del campo è stato risolto, il valore predefinito viene convalidato in base a quel tipo.