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=Truesi usasrequired=True. - repeated=False
- Indica si este campo se repite o no. Es mutuamente exclusivo con el argumento
required. No especifiquesrequired=Truesi usasrepeated=True.
Genera un error FieldDefinitionError si
message_typeno 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,
typeesdatetime.datetime. En el caso de los MessageFields definidos por el usuario,typees 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'>