I'm using protocol-buffers python lib to send data,but it's have some problems, so
Traceback (most recent call last): File "test_message.py", line 17, in <module> ptask.task = task File "build\bdist.win32\egg\google\protobuf\internal\python_message.py", line 513, in setter AttributeError: Assignment not allowed to composite field "_task" in protocol message object.
the src as follows:
proto file:
message task { required int32 id = 1; required string msg = 2; } message task_info { required task task = 1; }
python code:
task = yacc.task() task.id = 1000 task.msg = u"test" ptask = yacc.task_info() ptask.task = task # this line happen the runtime error
Try CopyFrom:
ptask.task.CopyFrom(task)
I don't know protocol-buffers but I took a look at the docs and it says:
You cannot assign a value to an embedded message field. Instead, assigning a value to any field within the child message implies setting the message field in the parent.
So I'm assuming this should work:
task = yacc.task() task.id = 1000 task.msg = u"test" ptask = yacc.task_info() ptask.task.id = task.id ptask.task.msg = task.msg
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With