用于Protobuf的Python中的原始包装器

时间:2017-06-29 22:53:48

标签: python protocol-buffers

我使用proto3并在某个.proto文件中定义了一条消息:

message Response {
  google.protobuf.BoolValue field = 1;
  ...
}

为了在Python中初始化Response,我需要创建一个布尔基元包装器并附加一些值。

如果我要将此值初始化为True,这很好。来自Python笔记本:

In [52]: from google.protobuf import wrappers_pb2 as wrappers
         boo = wrappers.BoolValue(value=True)
         boo

Out [52]: value: true

如果我要将此值初始化为False,则不会创建包装对象:

In [52]: from google.protobuf import wrappers_pb2 as wrappers
         boo = wrappers.BoolValue(value=False)
         boo

Out [52]: 

如何创建BoolValue初始化为false?

1 个答案:

答案 0 :(得分:3)

从字段列表as implemented here中删除非真实值。

>> boo = wrappers.BoolValue(value=True)
>> boo.ListFields()
[(<google.protobuf.descriptor.FieldDescriptor object at 0x10a037bd0>, True)]

>> boo = wrappers.BoolValue(value=False)
>> boo.ListFields()
[]

为了访问消息值,您可以这样写:

>> boo = wrappers.BoolValue(value=True)
>> boo.value
True

>> boo = wrappers.BoolValue(value=False)
>> boo.value
False