Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Protobuf中删除属性?_Python_Google App Engine_Protocol Buffers - Fatal编程技术网

Python 如何从Protobuf中删除属性?

Python 如何从Protobuf中删除属性?,python,google-app-engine,protocol-buffers,Python,Google App Engine,Protocol Buffers,我想从实例化的实体\u pb.EntityProto中删除一个属性,实例化方式如下: pb = entity_pb.EntityProto() prop1 = pb.add_property() prop1.set_name('prop1') prop2 = pb.add_property() prop2.set_name('prop2') 假设我不再需要prop1了。我怎样才能删除它 这个问题与希望将protobufs注入AppEngine数据存储有关,但无法放置具有\uuuu scatte

我想从实例化的实体\u pb.EntityProto中删除一个属性,实例化方式如下:

pb = entity_pb.EntityProto()
prop1 = pb.add_property()
prop1.set_name('prop1')
prop2 = pb.add_property()
prop2.set_name('prop2')
假设我不再需要prop1了。我怎样才能删除它

这个问题与希望将protobufs注入AppEngine数据存储有关,但无法放置具有
\uuuu scatter\uuuu
属性的现有protobufs。如果我尝试放置实体,它会返回以下错误:
BadRequestError:无法使用保留属性名“\uuuuu scatter\uuuuuuuu”存储实体。

查看,没有任何关于操作单个EntityProtos的内容。entity_pb.py中的代码也没有显示任何相关的方法,因此我采用了“让我们直接操作对象,尽管您实际上不应该这样做”的方法

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

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

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