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 specificarerepeated=True
se utilizzirequired=True
. - repeated=Falso
- Indica se questo campo è ripetuto o meno. Si escludono a vicenda con l'argomento
required
; non specificarerequired=True
se utilizzirepeated=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'>