Estoy usando búferes de protocolo en Python y tengo un Person
mensaje
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
.append
no funciona si el campo es un tipo de mensaje en lugar de un tipo sin formato (como cadena, int32, etc.).extend
funciona 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