MessageField クラス

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 の場合、typedatetime.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'>