A classe MessageField

A classe MessageField é usada para definir mensagens para uma transmissão eficiente no espaço de rede ou de processo. As mensagens são definidas através de classes de campos.

O MessageField é fornecido pelo módulo protorpc.messages.

Construtor

O construtor da classe MessageField é definido da seguinte forma:

class MessageField(message_type, number, [required=False | repeated=False])

Define campos para valores de submensagens.

Argumentos
message_type
O tipo de mensagem para o campo. Tem de ser uma subclasse de Message.
number
Número do campo. Tem de ser único por classe de mensagem.
required=False
Se este campo é obrigatório ou não. Exclusivo com o argumento repeated; não especifique repeated=True se usar required=True.
repeated=Falso
Se este campo é repetido ou não. Exclusivo com o argumento required; não especifique required=True se usar repeated=True.

Gera um FieldDefinitionError se message_type for inválido.

Propriedade da classe

A classe MessageField oferece as seguintes propriedades:

type
O tipo Python usado para os valores deste campo. Por exemplo, no caso de DateTimeField, type é datetime.datetime. Para MessageFields definidos pelo utilizador, type é o tipo de mensagem especificado.
message_type
O tipo de mensagem subjacente usado para a serialização. Especificamente, este é o tipo que pode armazenar numa instância de uma classe Message. Por exemplo, para DateTimeField, o tipo é message_types.DateTimeMessage. Para campos de mensagens normais, será a subclasse de mensagens protorpc. Por exemplo:
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'>