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

罗里

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

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

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

这可能吗?

(我是协议缓冲区的新手,如果我的问题没有道理,请告诉我)

肯顿·瓦尔达(Kenton Varda)

从理论上讲,所有这些部分都可以使这项工作奏效。Python protobuf实现可以调用C ++.proto解析器库(libprotoc)作为C扩展来获取Descriptor,然后可以将其馈送到元类中。

但是,据我所知,没有人完全把它捆绑在一起。(免责声明:我的知识已有几年了,我可能错过了一个新的进展,但我在文档中什么都看不到。)

顺便说一句,Cap'n Proto的Python实现确实做了您描述的事情,证明了它是可能的。但是,如果您需要使用Protobuf格式,那对您没有帮助。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章