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
repeatedschließen sich gegenseitig aus. Geben Sierepeated=Truenicht an, wenn Sierequired=Trueverwenden. - repeated=False
- Gibt an, ob dieses Feld wiederholt wird. Dieses Argument und das Argument
requiredschließen sich gegenseitig aus. Geben Sierequired=Truenicht an, wenn Sierepeated=Trueverwenden.
Löst einen FieldDefinitionError aus, wenn
message_typeungü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
typebeispielsweisedatetime.datetime. Bei benutzerdefinierten MessageFields isttypeder 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'>