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=Truesi usasrequired=True. - repeated=False
- Si el campo se repite o no. Es mutuamente exclusivo con el argumento
required; no especifiquesrequired=Truesi usasrepeated=True.
Genera un FieldDefinitionError si el
message_typeno 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,
typeesdatetime.datetime. Para MessageFields definidos por el usuario,typees 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'>