La classe EnumField

La classe EnumField fornisce le definizioni dei valori enum. I campi di enumerazione possono avere valori predefiniti che vengono ritardati fino alla risoluzione del tipo di enumerazione associato. Questa operazione è necessaria 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 viene definito come segue:

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

Fornisce una definizione di campo per i valori di enumerazione.

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 messaggi.
obbligatorio
Indica se questo campo è obbligatorio o meno. Si escludono a vicenda con l'argomento repeated; non specificare repeated se usi required.
ripetuto
Indica se questo campo è ripetuto o meno. Si escludono a vicenda con l'argomento required; non specificare required se usi repeated.
variante
Specifica ulteriormente il tipo di campo. Alcuni tipi di campi sono ulteriormente limitati in base al formato dei cavi sottostante. La best practice prevede l'utilizzo del valore predefinito, ma gli sviluppatori possono utilizzare questo campo per dichiarare un campo intero come numero intero a 32 bit rispetto al campo predefinito a 64 bit.
predefinita
Valore predefinito da utilizzare per il campo se non viene trovato nello stream.

Genera un valore FieldDefinitionError quando enum_type non è valido.

Proprietà delle classi

La classe EnumField fornisce le seguenti proprietà:

tipo()
Tipo di enum utilizzato per il campo.
valore predefinito()
Valore predefinito per il campo enum. Se il valore predefinito non è risolto, utilizza Enum type come predefinito.

Metodi di istanza

Il metodo delle istanze EnumField è il seguente:

validate_default_element(valore)
Convalida l'elemento predefinito del campo Enum. I campi di enumerazione 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 di enumerazione del campo è stato risolto, il valore predefinito viene convalidato in base a quel tipo.