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=True
se utilizzirequired=True
. - repeated=False
- Indica se questo campo viene ripetuto o meno. Esclusivo con l'argomento
required
. Non specificarerequired=True
se utilizzirepeated=True
.
Genera un FieldDefinitionError se
message_type
non è valido.
Proprietà del corso
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 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 memorizzare 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'>