web-dev-qa-db-fra.com

Comment assigner à un champ répété?

J'utilise des tampons de protocole dans python et j'ai un message Person

repeated uint64 id

mais quand j'essaye de lui attribuer une valeur comme:

person.id = [1, 32, 43432]

Je reçois une erreur: Assigment not allowed for repeated field "id" in protocol message object Comment attribuer une valeur à un champ répété?

60
PaolaJ.

Conformément à la documentation , vous ne pouvez pas affecter directement à un champ répété. Dans ce cas, vous pouvez appeler extend pour ajouter tous les éléments de la liste au champ.

person.id.extend([1, 32, 43432])
80
Tim

Si vous ne voulez pas étendre mais l'écraser complètement, vous pouvez faire:

person.id[:] = [1, 32, 43432]

Cette approche fonctionnera également pour vider complètement le champ:

del person.id[:]
19
kirpit