私は1)protobufスキーマと2)与えられたprotobufメッセージのバイナリデータを提供するWebサービスにアクセスしています。いるProtobufスキーマは、ZIP形式で取得し、として大まかに定義され.protoファイルが含まれている:私はそれをコンパイル、.protoファイルをフェッチしたらPythonでprotobufオブジェクトを動的に拡張するにはどうすればよいですか?
message FooMessage {
//stuff
...
}
//other .proto fun...
:
protoc --python_out=. path/to/message
をと
module = importlib.import_module(libName, package=pkg)
次のステップに行くと、指定されたオブジェクトのためのバイナリデータをフェッチすることです。そして、私はモジュールをインポートします。私はそれをしてdata = io.BytesIO
オブジェクトとしてそれを格納します。
だから今、私は.protoファイルで定義されている私のフェッチされたバイナリデータをFooMessageオブジェクトを膨らませるためにしたい、ALA:
obj = module.FooMessage(data)
質問:
- 私は
FooMessage
を取得するにはどうすればよいですオブジェクトを動的に構築できるようにインポートしたmodule
のクラス名 - 単一の.protoファイルのコンパイル済みコードを調べても、バイナリデータを渡して
FooMessage_pb2.py
オブジェクトを膨張させる明白な方法はありません。
obj = module.FooMessage(data)
は、明らかに私は間違った方法でこれを考える/やってる:オブジェクトALAをインスタンス化するバイナリデータに取る方法があるように思えません。私は大いに助けに感謝します。
あなたが何を求めているのかわかりません。これらのスキーマに準拠したスキーマ、データがあります。どうしたの? – user1685095
私は_pb2.pyクラスにコンパイルした.protoファイルを取り出します。 – jdt141
はそのコメントを無視します。私は明確にするために質問を編集しました。 – jdt141