La classe MessageField

La classe MessageField viene utilizzata per definire i messaggi per una trasmissione efficiente tra la rete o lo spazio di processo. I messaggi vengono definiti campo .

MessageField fornito da protorpc.messages in maggior dettaglio più avanti in questo modulo.

Costruttore

Il costruttore della classe MessageField è definito come segue:

class MessageField(message_type, numero, [required=False | repeated=False])

Definisce i campi per i valori dei messaggi secondari.

Argomenti
message_type
Il tipo di messaggio per il campo. Deve essere una sottoclasse di Messaggio.
number
Numero del campo. Deve essere univoco per ogni classe di messaggio.
required=False
Se questo campo è obbligatorio o meno. Si escludono a vicenda con repeated argomento; non specificare repeated=True se utilizzi required=True.
repeated=False
Indica se questo campo è ripetuto. Si escludono a vicenda con required argomento; non specificare required=True se utilizzi repeated=True.

Genera un FieldDefinitionError se message_type non è valido.

Proprietà del corso

La classe MessageField fornisce le seguenti proprietà:

type
Il tipo di Python utilizzato per i valori di questo campo. Ad esempio, nel caso di DateTimeField, type è datetime.datetime. Per Definito dall'utente MessageFields, type è il tipo di messaggio specificato.
message_type
Il tipo di messaggio sottostante utilizzato per la serializzazione. Nello specifico, si tratta del tipo che puoi archiviare in un'istanza di una classe Message. Ad esempio: per DateTimeField, il tipo sarà message_types.DateTimeMessage. Per la normalità sarà la sottoclasse del messaggio protorpc. Ad esempio:
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'>