たとえば、次のような proto-file がありますFile.proto
:
enum Test {
ONE = 1;
TWO = 2;
}
File_pb2.py
protoc でファイルを生成しますFile.proto
。Python コードで、File_pb2.py
独自の辞書を定義せずに、生成されたファイルから文字列 "ONE" (File_pb2.ONE の名前に対応) を値 1 (File_pb2.ONE の値に対応) で取得したいです。どうすればできますか?
ベストアンサー1
生成された Python が File_pb2.py コードにあると仮定して、これを試してください。
file_pb2._TEST.values_by_number[1].name
あなたの場合、これは'ONE'
逆の場合は次のようになります。
file_pb2._TEST.values_by_name['ONE'].number
あげる1
。
編集: コメントで @dyoo が正しく指摘したように、protobuf ライブラリに新しいメソッドが導入されました:
file_pb2.Test.Name(1)
file_pb2.Test.Value('One')
編集: これは proto3 で再度変更されました。Name() メソッドと Value() メソッドは EnumTypeWrapper クラスに属するようになったため、次のようにアクセスできます。
file_pb2.Name(1)
file_pb2.Value('One')