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 especifiquerepeated=True
se usarrequired=True
. - repeated=Falso
- Se este campo é repetido ou não. Exclusivo com o argumento
required
; não especifiquerequired=True
se usarrepeated=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'>