2
當構建原始對象時,「TypeError:無法分配給擴展名」actionRequest「,因爲它是重複或複合類型。protobuf python錯誤「無法分配給擴展,因爲它是重複或複合類型」
原型文件:
message Message{
message MessageContent{
extensions 100 to max;
}
optional MessageContent content = 1;
}
message ActionRequest{
optional string token = 1;
}
extend Message.MessageContent {
optional ActionRequest actionRequest = 200;
}
代碼:
import TestPb_pb2
message = TestPb_pb2.Message()
request = TestPb_pb2.ActionRequest()
message.content.Extensions[TestPb_pb2.actionRequest] = request
需要注意的是常規(非-extension)字段的工作方式類似。它是這樣設計的,以便Python API可以包裝C++實現以提高性能。由於C++ API沒有GC或引用計數,所以不能將同一個消息對象鏈接到兩個不同的父級,因此API旨在防止您嘗試。 (無論如何,這是推理 - 我不一定說這是一個很好的決定。) –