web-dev-qa-db-ja.com

繰り返しフィールドに割り当てる方法は?

pythonでプロトコルバッファを使用していますが、Personメッセージがあります

repeated uint64 id

しかし、次のように値を割り当てようとすると:

person.id = [1, 32, 43432]

エラーが表示されます:Assigment not allowed for repeated field "id" in protocol message object繰り返しフィールドに値を割り当てる方法は?

60
PaolaJ.

ドキュメント に従って、繰り返しフィールドに直接割り当てることはできません。この場合、extendを呼び出して、リスト内のすべての要素をフィールドに追加できます。

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

extendではなく、完全に上書きする場合は、次のようにします。

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

このアプローチは、フィールドを完全にクリアするためにも機能します。

del person.id[:]
19
kirpit