我在python中使用协议缓冲区,并且有一条Person
消息
repeated uint64 id
但是当我尝试为它赋值时:
person.id = [1, 32, 43432]
我收到一个错误:Assigment not allowed for repeated field "id" in protocol message object
如何为重复字段分配值?
Answers:
根据文档,您不能直接分配给重复的字段。在这种情况下,您可以调用extend
将列表中的所有元素添加到字段中。
person.id.extend([1, 32, 43432])
append
如果该字段是消息类型而不是原始类型(例如字符串,int32等),则不起作用。extend
确实适用于消息类型。
del person.siblings[:]
person.siblings.extend([Person(), Person()])
如果您不想扩展但将其完全覆盖,则可以执行以下操作:
person.id[:] = [1, 32, 43432]
这种方法也将彻底清除该领域:
del person.id[:]
对于重复的复合类型,这对我有用。
del person.things[:]
person.things.extend([thing1, thing2, ..])
从这些注释中获取 如何分配给重复字段? 如何分配重复字段?
append()
,例如person.id.append(1)
。这适用于所有 protobufrepeated
字段。