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, message_type, [message_type=False | message_type
-
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 especifiquerepeated=True
se usarrequired=True
. - repeated=False
- Se o campo é repetido ou não. Mutuamente exclusivo com o argumento
required
. Não especifiquerequired=True
se usarrepeated=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'>