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

Ror*_*ory 9 python protocol-buffers

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

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

import whatever
module = whatever.load_from_file("myfile.proto")
Run Code Online (Sandbox Code Playgroud)

这可能吗?

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

Ken*_*rda 8

从理论上讲,所有的部分都是为了使这项工作成功.Python protobuf实现可以将C++ .proto解析器库(libprotoc)称为C扩展,以获取描述符,然后可以将它们提供给元类.

但是,据我所知,没有人完全把它捆绑在一起.(免责声明:我的知识已经有几年了,我可能错过了一个新的开发,但我在文档中看不到任何内容.)

顺便提一下,Cap'n Proto的Python实现确实做了你所描述的,证明它是可能的.但是如果您需要使用Protobuf格式,这对您没有帮助.

(披露:我是Google大多数开源Protobuf代码的作者,我也是Cap'n Proto的作者.)