La classe MessageField viene utilizzata per definire i messaggi per una trasmissione efficiente nello spazio di rete o di processo. I messaggi vengono definiti utilizzando le 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 classe di messaggi.
- required=False
- Indica se questo campo è obbligatorio o meno. Si esclude a vicenda con l'argomento
repeated; non specificarerepeated=Truese utilizzirequired=True. - repeated=False
- Indica se questo campo è ripetuto o meno. Si esclude a vicenda con l'argomento
required; non specificarerequired=Truese utilizzirepeated=True.
Genera un FieldDefinitionError se
message_typenon è 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 MessageFields definiti dall'utente,typeè il tipo di messaggio specificato. - message_type
- Il tipo di messaggio sottostante utilizzato per la serializzazione. Nello specifico, questo è
il 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'>