Klasse "EnumField"

Die EnumField-Klasse stellt Definitionen für Enumerationswerte bereit. Enumerationsfelder können über Standardwerte verfügen, die verzögert werden, bis der zugehörige Enumerationstyp erkannt wurde. Dies ist für die Unterstützung bestimmter Zirkelverweise erforderlich. Beispiele:

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 wird vom Modul protorpc.messages bereitgestellt.

Konstruktor

Der Konstruktor der EnumField-Klasse wird folgendermaßen definiert:

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

Stellt eine Felddefinition für Enumerationswerte bereit.

Argumente
enum_type
Der Enumerationstyp eines Felds. Muss eine abgeleitete Klasse von Enum sein.
number
Die Nummer des Felds. Muss für jede Nachrichtenklasse eindeutig sein.
required
Gibt an, ob es sich bei dem Feld um ein Pflichtfeld handelt. Dieses Argument und das Argument repeated schließen sich gegenseitig aus. Geben Sie repeated nicht an, wenn Sie required verwenden.
repeated
Gibt an, ob dieses Feld wiederholt wird. Dieses Argument und das Argument required schließen sich gegenseitig aus. Geben Sie required nicht an, wenn Sie repeated verwenden.
variant
Beschreibt den Feldtyp genauer. Einige Feldtypen werden anhand des zugrunde liegenden Sendeformats weiter eingeschränkt. Am besten verwenden Sie den Standardwert, Entwickler können mit diesem Feld jedoch auch ein Ganzzahlenfeld als 32-Bit-Ganzzahl im Gegensatz zum 64-Bit-Standard deklarieren.
Standardeinstellung
Standardwert zur Verwendung für das Feld, falls im Stream nichts gefunden wird.

Löst einen FieldDefinitionError aus, wenn enum_type ungültig ist.

Klasseneigenschaften

Die EnumField-Klasse umfasst die folgenden Klasseneigenschaften:

type()
Enumerationstyp für das Feld.
default()
Standardwert für das Enumerationsfeld. Wenn der Standardwert nicht aufgelöst ist, wird Enum type als Standard verwendet.

Instanzmethoden

EnumField-Instanzen weisen die folgenden Methoden auf:

validate_default_element(value)
Validiert das Standardelement des Enumerationsfelds. Enumerationsfelder erlauben eine verzögerte Auflösung von Standardwerten, wenn der Feldtyp nicht erkannt wurde. Bei dem Standardwert eines Felds kann es sich um einen String oder eine Ganzzahl handeln. Wenn der Enumerationstyp des Felds erkannt wurde, wird der Standardwert gegen diesen Typ validiert.