Die Klasse "MessageField" dient der Definition von Nachrichten für eine effiziente Übertragung über den Netzwerk- oder Prozessort. Nachrichten werden über Feldklassen definiert.
MessageField
wird vom Modul protorpc.messages
bereitgestellt.
Konstruktor
Der Konstruktor der MessageField-Klasse wird folgendermaßen definiert:
- class MessageField(message_type, number, [required=False | repeated=False])
-
Definiert Felder für Werte von Unternachrichten.
Argumente- message_type
- Der Nachrichtentyp für das Feld. Muss eine abgeleitete Klasse von Message sein.
- number
- Nummer des Felds. Muss für jede Nachrichtenklasse eindeutig sein.
- required=False
- 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=True
nicht an, wenn Sierequired=True
verwenden. - repeated=False
- Gibt an, ob dieses Feld wiederholt wird. Dieses Argument und das Argument
required
schließen sich gegenseitig aus. Geben Sierequired=True
nicht an, wenn Sierepeated=True
verwenden.
Löst einen FieldDefinitionError aus, wenn
message_type
ungültig ist.
Klassenattribut
Die Klasse "MessageField" hat folgende Attribute:
- type
- Python-Typ, der für Werte dieses Felds verwendet wird. Im Fall von DateTimeField ist
type
beispielsweisedatetime.datetime
. Bei benutzerdefinierten MessageFields isttype
der angegebene Nachrichtentyp. - message_type
- Der zugrunde liegende Nachrichtentyp, der für die Serialisierung verwendet wird. Dies ist insbesondere der Typ, den Sie in der Instanz einer Nachrichtenklasse speichern können. Für DateTimeField lautet der Typ beispielsweise
message_types.DateTimeMessage
. Für normale Nachrichtenfelder ist dies die abgeleitete Klasse der ProtoRPC-Nachricht. Beispiel:class Sub(messages.Message): x = messages.IntegerField(1) class M(messages.Message): sub = messages.MessageField(Sub, 1) dt = message_types.DateTimeField(2) print 'M.sub.type =', M.sub.type print 'M.sub.message_type =', M.sub.message_type print 'M.dt.type =', M.dt.type print 'M.dt.message_type =', M.dt.message_type === output === M.sub.type = <class '__main__.Sub> M.sub.message_type = <class '__main__.Sub'> M.dt.type = <type 'datetime.datetime'> M.dt.message_type = <class 'protorpc.message_types.DateTimeMessage'>