相应于协议缓冲区python generated code documentation, 我可以通过这种方式将对象添加到重复的消息字段中:
foo = Foo()
bar = foo.bars.add() # Adds a Bar then modify
bar.i = 15
foo.bars.add().i = 32 # Adds and modify at the same time
但:
如何从bar
删除bars
?
如何从n-th
删除bars
栏元素?
答案 0 :(得分:4)
我花了几分钟才能正确安装proto缓冲区编译器,因此可能有理由忽略这一点:)
虽然它不在文档中,但您实际上可以将重复字段视为普通列表。除了其私有方法,它支持add
,extend
,remove
和sort
,remove
是您在第一种情况下寻找的:< / p>
foo.bars.remove(bar)
以上是在上一行(由上面的代码定义)之前和之后打印foo
时的输出:
Original foo: bars { i: 15 } bars { i: 32 } foo without bar: bars { i: 32 }
至于删除nth
元素,您可以使用del
和要删除的索引位置:
# Delete the second element
del foo.bars[1]
输出:
Original foo: bars { i: 15 } bars { i: 32 } Removing index position 1: bars { i: 15 }
希望有所帮助!