全部, 为新手问题提前道歉,但我无法弄清楚如何设置嵌套的非重复消息的值。对于重复消息类型,我可以使用.add()将变量定义为嵌套消息,然后以直接方式设置参数。但是对于非重复的消息类型,我无法做到这一点。
我有以下架构:
syntax="proto2";
package pkgName;
message OuterLayer
{
required string thing = 1;
message InnerLayer
{
optional string otherthing = 1;
}
我原本以为我可以这样做:
message = proto_pb2.OuterLayer()
message.InnerLayer.otherthing = "bar"
现在 - 这并没有失败,但是当我在设置此内容后打印消息时,我看不到内容,让我相信它不起作用。例如,如果我在顶层设置参数:
message.thing = "foo"
然后打印出来:
print(message)
我明白了:
"thing" : "foo"
...但不是下一层的内容。
我们非常感谢任何建议。
答案 0 :(得分:0)
我感觉相当愚蠢,但这对我来说并不明显。希望这有助于其他人。我可以说,正确的方法是使用附加字段修改我的架构:
syntax="proto2";
package pkgName;
message OuterLayer
{
required string thing = 1;
message InnerLayer
{
optional string otherthing = 1;
}
optional InnerLayer innerlevel = 2;
既然已经完成了,你可以按照预期的那样做:
message.innerlevel.otherthing = "foo"