lit*_*019 2 python protocol-buffers
我想在python上测试protobuf API上的嵌套消息.
我的原型ndemo.proto文件是:
package ndemotest;
message BaseRequest
{
required bytes Key = 1;
}
message ContRequest
{
required BaseRequest baseRequest = 1;
optional string Url = 2;
}
Run Code Online (Sandbox Code Playgroud)
我的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)
Run Code Online (Sandbox Code Playgroud)
当我运行我的脚本时python ndemo.py,出现了错误
回溯(最近一次调用最后一次):文件"ndemo.py",第8行,在base_request = contReq.baseRequest.add()中AttributeError:'BaseRequest'对象没有属性'add'
你只有add()一个repeated领域,这就是它的重点.
在你的情况下,baseRequest是required,你只需简单地把价值直接在分配到外地BaseRequest,如:
contReq = ndemo_pb2.ContRequest()
contReq.baseRequest.key = "12345"
Run Code Online (Sandbox Code Playgroud)