Я использую буферы протокола в Python, и у меня есть Person
сообщение
repeated uint64 id
но когда я пытаюсь присвоить ему значение, например:
person.id = [1, 32, 43432]
Я получаю сообщение об ошибке: Assigment not allowed for repeated field "id" in protocol message object
Как присвоить значение повторяющемуся полю?
python
protocol-buffers
PaolaJ.
источник
источник
append()
, напримерperson.id.append(1)
. Это применимо к любым полям protobufrepeated
.append
не работает, если поле является типом сообщения, а не необработанным типом (например, string, 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, ..])
взято из этих комментариев Как назначить повторяющееся поле? Как назначить повторяющееся поле?
источник