La classe EnumField fornisce definizioni per i valori enum. I campi enum possono avere valori predefiniti che vengono ritardati fino alla risoluzione del tipo di enum associato. Questo è 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 di enum di un campo. Deve essere una sottoclasse di Enum.
- numero
- Il numero del campo. Deve essere univoco per ogni classe di messaggio.
- obbligatorio
- Se questo campo è obbligatorio o meno. Si esclude a vicenda con l'argomento
repeated
; non specificarerepeated
se utilizzirequired
. - ripetute
- Indica se questo campo è ripetuto. Si esclude a vicenda con l'argomento
required
; non specificarerequired
se 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 consiste nell'utilizzare il valore predefinito, ma gli sviluppatori possono utilizzare questo campo per dichiarare un campo di tipo intero come intero a 32 bit anziché il valore predefinito di 64 bit.
- default
- Valore predefinito da utilizzare per il campo se non viene trovato nello stream.
Genera un FieldDefinitionError quando
enum_type
non è valido.
Proprietà del corso
La classe EnumField fornisce le seguenti proprietà di classe:
- type()
- Tipo di enum utilizzato per il campo.
- default()
- Valore predefinito per il campo enum. Se il valore predefinito non è risolto, utilizza il valore predefinito type enum.
Metodi di istanza
Le istanze EnumField hanno il seguente metodo:
- validate_default_element(value)
- Verifica 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.