Estou usando buffers de protocolo em python e tenho uma Person
mensagem
repeated uint64 id
mas quando tento atribuir um valor a ele:
person.id = [1, 32, 43432]
Recebo um erro: Assigment not allowed for repeated field "id" in protocol message object
Como atribuir um valor a um campo repetido?
python
protocol-buffers
PaolaJ.
fonte
fonte
append()
, por exemploperson.id.append(1)
. Isso se aplica a qualquer campo protobufrepeated
.append
não funciona se o campo for um tipo de mensagem em vez de um tipo bruto (como string, int32, etc).extend
funciona para tipos de mensagem.del person.siblings[:]
person.siblings.extend([Person(), Person()])
Se você não deseja estender, mas substituí-lo completamente, pode fazer:
person.id[:] = [1, 32, 43432]
Essa abordagem também funcionará para limpar o campo inteiramente:
del person.id[:]
fonte
Para tipos compostos repetidos, isso funcionou para mim.
del person.things[:] person.things.extend([thing1, thing2, ..])
retirado desses comentários Como atribuir a campo repetido? Como atribuir a campo repetido?
fonte