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 Sierepeated
nicht an, wenn Sierequired
verwenden. - repeated
- Gibt an, ob dieses Feld wiederholt wird. Dieses Argument und das Argument
required
schließen sich gegenseitig aus. Geben Sierequired
nicht an, wenn Sierepeated
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.