Klasse "MessageField"

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 Sie repeated=True nicht an, wenn Sie required=True verwenden.
repeated=False
Gibt an, ob dieses Feld wiederholt wird. Dieses Argument und das Argument required schließen sich gegenseitig aus. Geben Sie required=True nicht an, wenn Sie repeated=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 beispielsweise datetime.datetime. Bei benutzerdefinierten MessageFields ist type 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'>