protobuf python error“无法分配给扩展,因为它是重复类型或复合类型”

2024-06-28 10:52:34 发布

您现在位置:Python中文网/ 问答频道 /正文

当构建proto对象时,“TypeError:无法分配给扩展”actionRequest“,因为它是重复的或复合的类型。”

原型文件:

message Message{
    message MessageContent{
        extensions 100 to max;
    }
     optional MessageContent content = 1;
}
message ActionRequest{
    optional string token = 1;

}

^{pr2}$

代码:

import TestPb_pb2
message = TestPb_pb2.Message()
request = TestPb_pb2.ActionRequest()
message.content.Extensions[TestPb_pb2.actionRequest] = request

Tags: 对象类型messagerequestcontent原型optionalproto
1条回答
网友
1楼 · 发布于 2024-06-28 10:52:34

协议缓冲区Python API自动为您构造扩展消息的实例。因此,不必指定给message.content.Extensions[TestPb_pb2.actionRequest],您可以写入预构造的消息:

message.content.Extensions[TestPb_pb2.actionRequest].token = "foobar"

(至于为什么API是这样设计的,我不知道。)

相关问题 更多 >