Как установить поле ProtoBuf, которое является пустым сообщением в Python?

ниже приведены содержимое буфера протокола Google (.proto) file

message First
{
    required uint32 field1 = 1;

    optional MessageType1 request = 2;
}

message MessageType1
{
}

Я хочу установить запрос поля MessageType1. Но я получаю это как ошибку:

AttributeError: Assignment not allowed to composite field "request" in protocol message object.

Как установить значение этого пустого сообщения в Python?

1 ответов


получил это в исходном коде класса Message в Proto Buffer.

  def SetInParent(self):
    """Mark this as present in the parent.

    This normally happens automatically when you assign a field of a
    sub-message, but sometimes you want to make the sub-message
    present while keeping it empty.  If you find yourself using this,
    you may want to reconsider your design."""

таким образом, способ установить такое пустое сообщение-вызвать эту функцию:

first.request.SetInParent()