La clase MessageField

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 especifiques repeated=True si usas required=True.
repeated=False
Si el campo se repite o no. Es mutuamente exclusivo con el argumento required; no especifiques required=True si usas repeated=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 es datetime.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'>