MessageField se usa para definir mensajes y lograr una transmisión eficiente en la red o con el fin de procesar el espacio. Los mensajes se definen con clases Field.
El módulo protorpc.messages
proporciona MessageField
.
Constructor
El constructor de la clase MessageField se define de la siguiente manera:
- class MessageField(message_type, number, [required=False | repeated=False])
-
Define los campos para los valores de submensajes.
Argumentos- message_type
- El tipo de mensaje para el campo. Debe ser una subclase de Message.
- number
- Número del campo. Debe ser único por cada clase de mensaje.
- required=False
- Si el campo es obligatorio o no. Es mutuamente exclusivo con el argumento
repeated
; no especifiquesrepeated=True
si usasrequired=True
. - repeated=False
- Si el campo se repite o no. Es mutuamente exclusivo con el argumento
required
; no especifiquesrequired=True
si usasrepeated=True
.
Genera un FieldDefinitionError si el
message_type
no es válido.
Propiedad de clase
La clase MessageField brinda las siguientes propiedades:
- type
- El tipo de Python utilizado para los valores de este campo. Por ejemplo, en el caso
de DateTimeField,
type
esdatetime.datetime
. Para MessageFields definidos por el usuario,type
es el tipo de mensaje especificado. - message_type
- El tipo de mensaje subyacente usado para la serialización. En específico, este es el tipo que puedes almacenar en una instancia de una clase de mensaje. Por ejemplo, para DateTimeField, el tipo será
message_types.DateTimeMessage
. Para los campos de mensaje normales, será la subclase del mensaje protorpc. Por ejemplo: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'>