Python 中用于 Protobuf 的原始包装器

Primitive wrappers in Python for Protobuf

我正在使用 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?

非真实值已从字段列表中删除 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