La clase MessageField se usa para definir mensajes que se transmiten de forma eficiente a través de una red o un espacio de proceso. Los mensajes se definen mediante clases de campo.
MessageField
se proporciona mediante el módulo protorpc.messages
.
Constructor
El constructor de la clase MessageField se define del siguiente modo:
- class MessageField(message_type, number, [required=False | repeated=False])
-
Define campos para valores de submensaje.
Argumentos- message_type
- Tipo de mensaje del campo. Debe ser una subclase de Message.
- number
- Número del campo. Debe ser exclusivo en cada clase de mensaje.
- required=False
- Indica si este campo es obligatorio o no. Es mutuamente exclusivo con el argumento
repeated
. No especifiquesrepeated=True
si usasrequired=True
. - repeated=False
- Indica si este campo se repite o no. Es mutuamente exclusivo con el argumento
required
. No especifiquesrequired=True
si usasrepeated=True
.
Genera un error FieldDefinitionError si
message_type
no es válido.
Clase Property
La clase MessageField proporciona las siguientes propiedades:
- type
- El tipo de Python que se usa para los valores de este campo. Por ejemplo, en el caso de DateTimeField,
type
esdatetime.datetime
. En el caso de los MessageFields definidos por el usuario,type
es el tipo de mensaje especificado. - message_type
- Tipo de mensaje subyacente utilizado para la serialización. En concreto, es el tipo que puedes almacenar en una instancia de una clase Message. Por ejemplo, en el caso de DateTimeField, el tipo será
message_types.DateTimeMessage
. En el caso de los campos de mensajes normales, será la subclase de 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'>