如何从Protobuf中删除属性?

2024-10-01 02:26:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从实例化的实体中删除属性_pb.EntityProto公司,以这种方式实例化:

pb = entity_pb.EntityProto()
prop1 = pb.add_property()
prop1.set_name('prop1')
prop2 = pb.add_property()
prop2.set_name('prop2')

假设我不再需要道具了。我怎样才能去掉它?在

这个问题与想将protobuf注入AppEngine数据存储有关,但是不能放置具有__scatter__属性的现有protobuf。如果我尝试放置实体,它会返回以下错误:BadRequestError: cannot store entity with reserved property name '__scatter__'


Tags: 实例name实体add属性公司propertyentity
2条回答

您可以操作pb.property_list()的结果,这样可以:

 properties = pb.property_list()
 properties[:] = [e for e in properties if e.name() != '__scatter__']

看一下protobuf documentation,没有任何关于操作单个entityproto的内容。实体内的代码_pb.py公司也没有显示任何相关的方法,所以我使用了“让我们直接操作对象,即使你不应该这样做”的方法。在

props = element.property_
for i in range(len(props)):
    if props[i].name() == '__scatter__':
        props.pop(i)
        break

相关问题 更多 >