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
.
Constructeur
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 pasrepeated=True
si vous utilisezrequired=True
. - repeated=False
- Indique si le champ est répété ou non. Exclusion mutuelle avec l'argument
required
. N'indiquez pasrequired=True
si vous utilisezrepeated=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
estdatetime.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'>