Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

protobuf python

作者:妳會吥會在吥經意間想起莪?   发布日期:2025-11-02   浏览:25

# 导入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")

解释说明:

  1. 导入模块:首先导入由 protoc 编译器生成的 Python 模块(例如 addressbook_pb2),该模块包含了根据 .proto 文件定义的消息类。

  2. 创建对象:使用 addressbook_pb2.Person() 创建一个 Person 对象,并设置其属性(如 id, name, email)。

  3. 添加子消息:通过 person.phones.add() 方法添加电话号码,并设置电话号码和类型。

  4. 序列化:使用 SerializeToString() 方法将 Person 对象序列化为二进制字符串,以便存储或传输。

  5. 反序列化:使用 ParseFromString() 方法将二进制字符串反序列化为一个新的 Person 对象。

  6. 打印信息:遍历并打印反序列化后的 Person 对象的属性和电话号码信息。

上一篇:input().split()在python中的用法

下一篇:pythonstrip()函数

大家都在看

python时间格式

python读取文件路径

staticmethod在python中有

python开发windows应用程序

python中len是什么意思

python ord和chr

python中的yield

python自定义异常

python判断路径是否存在

python list.pop

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站