2024-09-27 23:26:11 发布
网友
例如,我有proto文件File.proto:
File.proto
enum Test { ONE = 1; TWO = 2; }
我用protoc从File.proto生成文件File_pb2.py。 我希望在python代码中,通过值1(对应于文件pb2.ONE的值)从生成的文件File_pb2.py中获取字符串“ONE”(对应于文件pb2.ONE的名称),而无需定义自己的字典。我该怎么做?
File_pb2.py
假设生成的python位于文件pb2.py代码中,请尝试以下操作:
file_pb2._TEST.values_by_number[1].name
在你的例子中,这应该给出'ONE'
'ONE'
相反的是:
file_pb2._TEST.values_by_name['ONE'].number
将给出1。
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')
假设生成的python位于文件pb2.py代码中,请尝试以下操作:
在你的例子中,这应该给出
'ONE'
相反的是:
将给出
1
。编辑:正如@dyoo在评论中正确指出的,protobuf库后来引入了一种新方法:
编辑:这在proto3中再次改变。现在Name()和Value()方法属于EnumTypeWrapper类,因此可以像下面这样访问它们:
相关问题 更多 >
编程相关推荐