# 导入protobuf生成的Python模块
import addressbook_pb2
# 创建一个Person对象
person = addressbook_pb2.Person()
person.id = 1234
person.name = "John Doe"
person.email = "jdoe@example.com"
# 添加电话号码
phone = person.phones.add()
phone.number = "555-4321"
phone.type = addressbook_pb2.Person.HOME
# 序列化Person对象为二进制字符串
serialized_person = person.SerializeToString()
# 反序列化二进制字符串为Person对象
new_person = addressbook_pb2.Person()
new_person.ParseFromString(serialized_person)
# 打印反序列化后的Person对象信息
print("ID:", new_person.id)
print("Name:", new_person.name)
print("Email:", new_person.email)
for phone in new_person.phones:
print("Phone number:", phone.number)
if phone.type == addressbook_pb2.Person.HOME:
print("Type: HOME")
elif phone.type == addressbook_pb2.Person.WORK:
print("Type: WORK")
导入模块:首先导入由 protoc 编译器生成的 Python 模块(例如 addressbook_pb2),该模块包含了根据 .proto 文件定义的消息类。
创建对象:使用 addressbook_pb2.Person() 创建一个 Person 对象,并设置其属性(如 id, name, email)。
添加子消息:通过 person.phones.add() 方法添加电话号码,并设置电话号码和类型。
序列化:使用 SerializeToString() 方法将 Person 对象序列化为二进制字符串,以便存储或传输。
反序列化:使用 ParseFromString() 方法将二进制字符串反序列化为一个新的 Person 对象。
打印信息:遍历并打印反序列化后的 Person 对象的属性和电话号码信息。
上一篇:input().split()在python中的用法
下一篇:pythonstrip()函数
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站