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 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 especifiquerepeated=Truese usarrequired=True. - repeated=False
- Se o campo é repetido ou não. Mutuamente exclusivo com o argumento
required. Não especifiquerequired=Truese usarrepeated=True.
Gera um FieldDefinitionError se o
message_typefor 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 Message especificado. - message_type
- O tipo de mensagem usado na serialização. Mais especificamente, esse é o tipo que é possível armazenar em uma instância de uma classe Message. Por exemplo, para DateTimeField, o tipo será
message_types.DateTimeMessage. Para campos de mensagem normais, ele 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'>