protobuf3, Python - Как установить элемент на картуСыроватского? - PullRequest
0 голосов
/ 01 октября 2018

Когда я пытался установить элемент map<string,Y> dict of X Значение ValueError поднялось.

"Прямое назначение суб-сообщения не разрешено"

Мой экспериментальный код

syntax = "proto3";

message X {
  map<string,Y> dict = 1;
}

message Y {
  int32 v = 1;
}

И код Python

x = x_pb2.X()
y = x_pb2.Y()
x.data['a'] = y

, затем возникла ошибка

Traceback (most recent call last):
  File "x.py", line 8, in <module>
    x.data['a'] = y
ValueError: Direct assignment of submessage not allowed

Как обойти эту проблему?

1 Ответ

0 голосов
/ 04 октября 2018

Полагаю, это оптимальный шаблон использования

x = x_pb2.X()
x.data['a'].v = 1

И еще один вариант использования CopyFrom

x = x_pb2.X()
y = x_pb2.Y()
y.v=2
x.data['a'].CopyFrom(y)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...