繁体   English   中英

对象在python的protobuf上没有属性“添加”

[英]object has no attribute 'add' on python's protobuf

我想在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”对象没有属性“ add”

repeated字段只有add() ,这就是重点。

对于您的情况,由于required baseRequest ,您只需将值直接分配给BaseRequest的字段BaseRequest ,例如:

contReq = ndemo_pb2.ContRequest()
contReq.baseRequest.key = "12345"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM