Używam buforów protokołów w Pythonie i mam Person
wiadomość
repeated uint64 id
ale kiedy próbuję przypisać mu wartość, taką jak:
person.id = [1, 32, 43432]
Pojawia się błąd: Assigment not allowed for repeated field "id" in protocol message object
Jak przypisać wartość do powtarzającego się pola?
python
protocol-buffers
PaolaJ.
źródło
źródło
append()
npperson.id.append(1)
. Dotyczy to wszystkich pól protobufrepeated
.append
nie działa, jeśli pole jest typem wiadomości, a nie surowym (np. string, int32 itp.).extend
działa dla typów wiadomości.del person.siblings[:]
person.siblings.extend([Person(), Person()])
Jeśli nie chcesz go przedłużać, ale całkowicie go nadpisać, możesz:
person.id[:] = [1, 32, 43432]
Takie podejście będzie również działać w celu całkowitego oczyszczenia pola:
del person.id[:]
źródło
W przypadku powtarzających się typów kompozytów to zadziałało.
del person.things[:] person.things.extend([thing1, thing2, ..])
zaczerpnięte z tych komentarzy Jak przypisać do powtarzającego się pola? Jak przypisać do powtarzającego się pola?
źródło