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 utilizzando classi di campi.
MessageField è fornito dal modulo protorpc.messages.
Costruttore
Il costruttore della classe MessageField è 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.
- 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 l'argomento
repeated. Non specificarerepeated=Truese utilizzirequired=True. - repeated=False
- Indica se questo campo viene ripetuto o meno. Si escludono a vicenda con l'argomento
required. Non specificarerequired=Truese utilizzirepeated=True.
Genera un errore FieldDefinitionError se
message_typenon è 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 MessageFields definito dall'utente,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 i campi dei messaggi normali, 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'>