Classe MessageField

La classe MessageField viene utilizzata per definire i messaggi per una trasmissione efficiente attraverso reti o spazi di processo. I messaggi vengono definiti utilizzando le classi di campo.

MessageField è fornito dal modulo protorpc.messages.

Costruttore

Il costruttore della classe MessageField viene definito come segue:

class MessageField(message_type, number, [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 Message.
numero
Numero del campo. Deve essere univoco per ogni classe di messaggi.
required=Falso
Indica se questo campo è obbligatorio o meno. Si escludono a vicenda con l'argomento repeated; non specificare repeated=True se utilizzi required=True.
repeated=Falso
Indica se questo campo è ripetuto o meno. Si escludono a vicenda con l'argomento required; non specificare required=True se utilizzi repeated=True.

Genera un FieldDefinitionError se message_type non è valido.

Proprietà della classe

La classe MessageField fornisce le seguenti proprietà:

type
Il tipo Python utilizzato per i valori di questo campo. Ad esempio, nel caso di DateTimeField, type è datetime.datetime. Per i campi dei messaggi definiti dall'utente, type è il tipo di messaggio specificato.
message_type
Il tipo di messaggio sottostante utilizzato per la serializzazione. In particolare, questo è il tipo che puoi archiviare su un'istanza di una classe Message. Ad esempio, per DateTimeField, il tipo sarà message_types.DateTimeMessage. Per i normali campi di messaggio, sarà la sottoclasse di 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'>