Classe MessageField

La classe MessageField est utilisée pour définir des messages en vue d'une transmission efficace sur un réseau ou un espace de traitement. Les messages sont définis à l'aide de classes de champs.

La classe MessageField est fournie par le module protorpc.messages.

Constructor

Le constructeur de la classe MessageField est défini comme suit :

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

Définit des champs pour les valeurs des sous-messages.

Arguments
message_type
Type de message pour le champ. Doit être une sous-classe de Message.
nombre
Numéro du champ. Doit être unique par classe de message.
required=False
Indique si le champ est obligatoire ou non. Exclusion mutuelle avec l'argument repeated. N'indiquez pas repeated=True si vous utilisez required=True.
repeated=False
Indique si le champ est répété ou non. Exclusion mutuelle avec l'argument required. N'indiquez pas required=True si vous utilisez repeated=True.

Déclenche une erreur FieldDefinitionError lorsque message_type n'est pas valide.

Propriété de la classe

La classe MessageField fournit les propriétés suivantes :

type
Type Python utilisé pour les valeurs de ce champ. Par exemple, dans le cas de DateTimeField, l'élément type est datetime.datetime. Pour la classe MessageFields définie par l'utilisateur, type est le type de message spécifié.
message_type
Type de message sous-jacent utilisé pour la sérialisation. Plus précisément, il s'agit du type que vous pouvez stocker sur une instance d'une classe Message. Par exemple, pour DateTimeField, le type sera message_types.DateTimeMessage. Pour les champs de message standards, il s'agit de la sous-classe de messages protorpc. Exemple :
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'>