A classe MessageField

A classe MessageField é usada para definir mensagens para transmissão eficiente pela rede ou pelo espaço de processamento. As mensagens são definidas usando-se classes de campo.

MessageField é fornecido pelo módulo protorpc.messages.

Construtor

O construtor da classe MessageField é definido assim:

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

Define campos para valores de submensagem.

Argumentos
message_type
O tipo de mensagem do campo. Precisa ser uma subclasse de Message.
number
Número do campo. Precisa ser exclusivo por classe de mensagem.
required=False
Se o campo é obrigatório ou não. Mutuamente exclusivo com o argumento repeated. Não especifique repeated=True se usar required=True.
repeated=False
Se o campo é repetido ou não. Mutuamente exclusivo com o argumento required. Não especifique required=True se usar repeated=True.

Gera um FieldDefinitionError se o message_type for inválido.

Propriedade da classe

A classe MessageField fornece as seguintes propriedades:

type
O tipo do Python usado em valores desse campo. Por exemplo, no caso de DateTimeField, type é datetime.datetime. Para MessageFields definidos pelo usuário, type é o tipo de mensagem especificado.
message_type
O tipo de mensagem subjacente usado na serialização. Mais especificamente, esse é o tipo que você pode armazenar em uma instância de uma classe Message. Por exemplo, para DateTimeField, o tipo será message_types.DateTimeMessage. Para campos de mensagem normais, ela será a subclasse da mensagem protorpc. 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'>