Estoy usando búferes de protocolo en Python y tengo un Personmensaje
repeated uint64 id
pero cuando trato de asignarle un valor como:
person.id = [1, 32, 43432]
Recibo un error: Assigment not allowed for repeated field "id" in protocol message object
¿Cómo asignar un valor a un campo repetido?
python
protocol-buffers
PaolaJ.
fuente
fuente

append(), por ejemploperson.id.append(1). Esto se aplica a cualquier campo protobufrepeated.appendno funciona si el campo es un tipo de mensaje en lugar de un tipo sin formato (como cadena, int32, etc.).extendfunciona para tipos de mensajes.del person.siblings[:]person.siblings.extend([Person(), Person()])Si no desea extenderlo pero sobrescribirlo por completo, puede hacer:
person.id[:] = [1, 32, 43432]Este enfoque también funcionará para despejar el campo por completo:
del person.id[:]fuente
Para tipos compuestos repetidos, esto es lo que funcionó para mí.
del person.things[:] person.things.extend([thing1, thing2, ..])tomado de estos comentarios ¿Cómo asignar un campo repetido? ¿Cómo asignar a un campo repetido?
fuente