【问题标题】:Primitive wrappers in Python for Protobuf用于 Protobuf 的 Python 中的原始包装器
【发布时间】:2018-08-08 19:41:01
【问题描述】:

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

【问题讨论】:

  • 您确定您的操作有问题吗? (如果你只是随意使用boo,会不会出错?)

标签: python protocol-buffers


【解决方案1】:

从字段列表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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2018-06-26
    • 2013-03-20
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多