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

标签 python protocol-buffers

我正在使用 proto3,并且在某些 .proto 文件中有一条消息定义为:

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

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

如果我将此值初始化为 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]: 

如何创建一个初始化为 false 的 BoolValue

最佳答案

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

关于python - Python 中用于 Protobuf 的原始包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836174/

相关文章:

java - 如何(base64)将 protobuf 编码为字符串

python - Pandas - 多列到 "column name - value"列

c++ - 用于 protobuf 转换的 Braced-init 样式构造函数

python - ipython 警告消息 - Linux

python - 使用 lxml 将输出格式化为 XML

Java 对象类型到 Protobuf

c++ - 编译的谷歌 Protocol Buffer 不工作(C++)

java - 从SpringBoot获取protobuf消息对象列表

python - Base.html 中 Flask 登录表单的 Bootstrap 模式无需在每个 View 函数中发送表单?

python - 二维数组中每个元素沿第一个维度的索引数组(numpy.、tensorflow)