La classe EnumField

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 specificare repeated se utilizzi required.
ripetuto
Indica se questo campo è ripetuto o meno. Si esclude a vicenda con l'argomento required; non specificare required se utilizzi repeated.
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_type non è 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.