MessageField 类用于定义消息,以跨网络或进程空间进行高效传输。消息使用 field 类进行定义。
MessageField
由 protorpc.messages
模块提供。
构造函数
MessageField 类的构造函数定义如下:
- class MessageField(message_type, number, [required=False | repeated=False])
-
定义用于子消息值的字段。
参数- message_type
- 字段的消息类型。必须是消息的子类。
- 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'>