Ich verwende Protokollpuffer in Python und habe eine Person
Nachricht
repeated uint64 id
aber wenn ich versuche, ihm einen Wert zuzuweisen, wie:
person.id = [1, 32, 43432]
Ich erhalte die Fehlermeldung: Assigment not allowed for repeated field "id" in protocol message object
Wie ordne ich einem wiederholten Feld einen Wert zu?
python
protocol-buffers
PaolaJ.
quelle
quelle
append()
zperson.id.append(1)
. Dies gilt für alle Protobuf-repeated
Felder.append
funktioniert nicht, wenn das Feld eher ein Nachrichtentyp als ein Rohtyp ist (wie Zeichenfolge, int32 usw.).extend
funktioniert für Nachrichtentypen.del person.siblings[:]
person.siblings.extend([Person(), Person()])
Wenn Sie es nicht erweitern, sondern vollständig überschreiben möchten , können Sie Folgendes tun:
person.id[:] = [1, 32, 43432]
Dieser Ansatz wird auch dazu beitragen, das Feld vollständig freizumachen:
del person.id[:]
quelle
Für wiederholte zusammengesetzte Typen hat dies bei mir funktioniert.
del person.things[:] person.things.extend([thing1, thing2, ..])
entnommen aus diesen Kommentaren Wie ordne ich ein wiederholtes Feld zu? Wie ordne ich ein wiederholtes Feld zu?
quelle