MessageField クラスは、ネットワークまたは処理空間全体で効率的に伝達されるようにメッセージを定義するために使用されます。メッセージはフィールド クラスを使用して定義されます。
MessageField
は、protorpc.messages
モジュールによって提供されます。
コンストラクタ
MessageField クラスのコンストラクタは、次のように定義されます。
- class MessageField(message_type, number, [required=False | repeated=False])
-
サブメッセージの値のフィールドを定義します。
引数- message_type
- フィールドのメッセージの型です。Message のサブクラスでなければなりません。
- number
- フィールドの番号。メッセージ クラスごとに一意でなければなりません。
- required=False
- このフィールドが必須かどうかを指定します。
repeated
引数と同時に指定することはできません。required=True
を使用する場合、repeated=True
は指定しないでください。 - repeated=False
- このフィールドが反復フィールドかどうかを指定します。
required
引数と同時に指定することはできません。repeated=True
を使用する場合、required=True
は指定しないでください。
message_type
が無効な場合は FieldDefinitionError を送出します。
クラスのプロパティ
MessageField クラスには次のプロパティがあります。
- type
- このフィールドの値に使用される Python 型。たとえば、DateTimeField の場合、
type
はdatetime.datetime
です。ユーザー定義の MessageField の場合、type
は指定のメッセージ型です。 - message_type
- シリアル化に使用される基本的なメッセージ型。具体的には、Message クラスのインスタンスに格納できる型です。たとえば、DateTimeField の場合、型は
message_types.DateTimeMessage
になります。通常のメッセージ フィールドの場合、protorpc メッセージ サブクラスになります。次に例を示します。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'>