在 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/