軟件版本
- Python: 3.7.3
- OS: Win7
- protoc: 3.11.2
- protobuf runtime library: 3.11.2
- protobuf runtime library install method: pip
- proto syntax: "proto2"
注意事項
- 使用編譯工具
protoc
編譯輸出的.py
文件對python
解釋器以及對應的protobuf
包都有版本要求 - 對應的嵌套
message
類在賦值時需要注意要求及方法的使用 - 因爲
google protobuf
向前兼容,所以使用"proto2"
也可以 - 官方網站訪問卡頓,下載
protoc
可以從maven
下載1 - python安裝包也有鏡像網站2
- 關於爲何使用該包可以參見3
- google protobuf官網4
基本代碼示例
#聲明消息頭
message_head = message_pb2.MessageBase.Header()
#枚舉的賦值值得關注
message_head.type = message_pb2.MessageBase.SERVICE_REQ
#聲明消息體,包含了一個Alarm對象的實例
message_body = message_pb2.MessageBase.Body()
message_body.context.MergeFrom(alarm)
#聲明整個消息體並對其實例化,整合消息頭和消息體的數據
message = message_pb2.MessageBase()
message.header.MergeFrom(message_head)
message.body.MergeFrom(message_body)
總結
下圖是序列化的結果
前期把java的跑通了,最近迷上了python,也想跑通。官方提供了上述編碼中遇到的MergeFrom()
方法也是個基本方法之一,注意的細節也說明了,其它問題應該都好解決。