python - 在运行时从 protobuf 文件动态创建 python 类?

标签 python protocol-buffers

在 Python 中,是否可以在运行时将 Google Protocol Buffers .proto 文件转换为读取该数据的 python 类? Python 是一种非常动态的语言。当您使用 protoc.proto 文件转换为 python 源代码时,生成的代码会大量使用 python 元类,因此它已经非常动态了。

理想情况下,我正在考虑这样的事情:

import whatever
module = whatever.load_from_file("myfile.proto")

这可能吗?

(我是 Protocol Buffer 的新手,如果我的问题没有意义请告诉我)

最佳答案

从理论上讲,所有组件的存在都是为了完成这项工作。 Python protobuf 实现可以调用 C++ .proto 解析器库 (libprotoc) 作为 C 扩展来获取描述符,然后可以将它们提供给元类。

但是,据我所知,还没有人完全将其捆绑在一起。 (免责声明:我的知识是几年前的,我可能错过了一个新的发展,但我没有在文档中看到任何东西。)

顺便说一句,Cap'n Proto的 Python 实现确实按照您的描述进行操作,证明这是可能的。但如果您需要使用 Protobuf 格式,这对您没有帮助。

(披露:我是 Google 大部分开源 Protobuf 代码的作者,也是 Cap'n Proto 的作者。)

关于python - 在运行时从 protobuf 文件动态创建 python 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342328/

相关文章:

python3 无法识别安装的正确 python 3 版本(Centos 7)

python - 如何匹配嵌套字符串而不是单独的字符串

c++ - 如何将第三方库(如 protobuf)正确链接到 Qt Creator 项目中?

protocol-buffers - 从描述符字符串恢复 .proto 文件。可能的?

java - Google Protobuf ByteString 与 Byte[]

python - 如何从 Cython 中的另一个线程设置 future\add 到队列的结果?

python - Networkx:如何在图形绘图中显示节点和边属性

python - 有条件地用 pandas 替换

java - 客户端渲染 JSON 与 GPB( Protocol Buffer )

protocol-buffers - 为什么 proto3 中没有自定义默认值?