J'utilise des tampons de protocole en python et j'ai un Person
message
repeated uint64 id
mais quand j'essaye de lui attribuer une valeur comme:
person.id = [1, 32, 43432]
J'obtiens une erreur: Assigment not allowed for repeated field "id" in protocol message object
comment attribuer une valeur à un champ répété?
python
protocol-buffers
PaolaJ.
la source
la source
append()
, par exempleperson.id.append(1)
. Cela s'applique à tous les champs protobufrepeated
.append
ne fonctionne pas si le champ est un type de message plutôt qu'un type brut (comme string, int32, etc.).extend
fonctionne pour les types de messages.del person.siblings[:]
person.siblings.extend([Person(), Person()])
Si vous ne voulez pas l' étendre mais l'écraser complètement, vous pouvez faire:
person.id[:] = [1, 32, 43432]
Cette approche fonctionnera également pour nettoyer entièrement le champ:
del person.id[:]
la source
Pour les types composites répétés, c'est ce qui a fonctionné pour moi.
del person.things[:] person.things.extend([thing1, thing2, ..])
tiré de ces commentaires Comment attribuer au champ répété? Comment attribuer un champ répété?
la source