我想在python上的protobuf API上测试嵌套消息。
我的原型ndemo.proto
文件是:
package ndemotest;
message BaseRequest
{
required bytes Key = 1;
}
message ContRequest
{
required BaseRequest baseRequest = 1;
optional string Url = 2;
}
我的python ndemo.py
代码是:
import binascii
import ndemo_pb2
contReq = ndemo_pb2.ContRequest()
contReq.Url="www.google.com"
base_request = contReq.baseRequest.add()
base_request.Key="12345"
packed_data = contReq.SerializeToString()
print 'sending "%s"' % binascii.hexlify(packed_data)
当我将脚本作为python ndemo.py
运行时,出现了错误
回溯(最近一次呼叫最后一次):文件" ndemo.py",第8行,在 base_request = contReq.baseRequest.add()AttributeError:' BaseRequest'对象没有属性'添加'
答案 0 :(得分:6)
add()
字段只有repeated
,这就是它的重点。
在您的情况下,由于baseRequest
为required
,您只需将该值直接指定给BaseRequest
中的字段,例如:
contReq = ndemo_pb2.ContRequest()
contReq.baseRequest.key = "12345"