例如,我有 proto-file File.proto
:
enum Test {
ONE = 1;
TWO = 2;
}
File_pb2.py
我使用 protoc生成文件File.proto
。我想在 python 代码中通过值 1(对应于 File_pb2.ONE 的值)从生成的文件中获取字符串“ONE”(对应于 File_pb2.ONE 的名称)File_pb2.py
而不定义我自己的字典。我怎样才能做到这一点?
例如,我有 proto-file File.proto
:
enum Test {
ONE = 1;
TWO = 2;
}
File_pb2.py
我使用 protoc生成文件File.proto
。我想在 python 代码中通过值 1(对应于 File_pb2.ONE 的值)从生成的文件中获取字符串“ONE”(对应于 File_pb2.ONE 的名称)File_pb2.py
而不定义我自己的字典。我怎样才能做到这一点?
假设生成的 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')