如何为协议缓冲区Python中的嵌入消息字段赋值

时间:2016-11-08 11:27:27

标签: python protocol-buffers messages

我有以下proto,我正在尝试为嵌入的消息字段分配值

message Foo {
  required Bar bar = 1;
}
message Bar {
  optional int32 i = 1;
} 

当我在python中编写以下代码时,它会给出以下错误

foo = Foo()
foo.bar.i = 1

错误:

  

AttributeError:' instancemethod'对象没有属性' i'

如何处理此错误?

1 个答案:

答案 0 :(得分:0)

要在Python中执行您想要的操作,您必须在bar类中定义Foo方法。这样的事情会做到:

class Foo:
    i = 1

    def bar(self):
        return self.i

if __name__ == '__main__':
    foo = Foo()
    foo.bar = 1
    print(foo.bar)  # this will print 1