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 specificarerepeated=True
se utilizzirequired=True
. - repeated=False
- Indica se questo campo è ripetuto. Si escludono a vicenda con
required
argomento; 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 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'>