首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AttributeError:不允许对协议消息对象中的复合字段"task“赋值

AttributeError:不允许对协议消息对象中的复合字段"task“赋值
EN

Stack Overflow用户
提问于 2013-08-22 17:14:13
回答 2查看 38.1K关注 0票数 58

我正在使用protocol-buffer python lib来发送数据,但是它有一些问题,所以

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "test_message.py", line 17, in <module>
    ptask.task = task
  File "build\bdist.win32\egg\google\protobuf\internal\python_message.py", line
513, in setter
AttributeError: Assignment not allowed to composite field "_task" in protocol message object.

src如下所示:

proto文件:

代码语言:javascript
运行
复制
message task {
    required int32 id = 1;
    required string msg = 2;
}

message task_info {
    required task task = 1;
}

python代码:

代码语言:javascript
运行
复制
task = yacc.task()
task.id = 1000
task.msg = u"test"
ptask = yacc.task_info() 
ptask.task = task # this line happen the runtime error 
EN

回答 2

Stack Overflow用户

发布于 2014-04-01 04:33:05

试试CopyFrom

代码语言:javascript
运行
复制
ptask.task.CopyFrom(task)
票数 109
EN

Stack Overflow用户

发布于 2013-12-28 05:59:25

我也是协议缓冲区的新手,也面临着同样的问题。我发现this method很有帮助。

我认为它应该是有效的:

代码语言:javascript
运行
复制
task = yacc.task()
task.id = 1000
task.msg = u"test"
ptask = yacc.task_info() 
ptask.task.MergeFrom(task)
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18376190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档