Comment attribuer à une répétition de champ?
Je suis en utilisant le protocole de tampons en python et j'ai un Person
message
repeated uint64 id
mais quand j'essaie de lui affecter 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 à une répétition de champ ?
Vous devez vous connecter pour publier un commentaire.
Que par la la documentation, vous n'êtes pas en mesure d'affecter directement à un répétée champ. Dans ce cas, vous pouvez appeler
extend
pour ajouter tous les éléments de la liste dans le champ.append()
, par exempleperson.id.append(1)
. Cela s'applique pour tous protobufrepeated
champs.append
ne fonctionne pas si le champ est un type de message plutôt qu'une crue de type (comme string, int32, etc).extend
fonctionne pour les types de messages.del person.siblings[:]
person.siblings.extend([Person(), Person()])
add
. developers.google.com/protocol-buffers/docs/reference/...Si vous ne voulez pas étendre mais l'écraser complètement, vous pouvez le faire:
Cette approche permettra également de travailler pour effacer le champ entièrement:
Vous pouvez essayer d'utiliser
MergeFrom
Découvrez ces docs pour la liste complète des Message méthodes s'offrent à vous:
https://developers.google.com/protocol-buffers/docs/reference/python/google.protobuf.message.Message-class