在我名为skill.proto的protobuf文件中,我有:
message Cooking {
enum VegeType {
CAULIFLOWER = 0;
CUCUMBER = 1;
TOMATO = 2
}
required VegeType type = 1;
}
在另一个文件中(例如:name.py)我想检查文件中的枚举是否为有效类型
#if (myCookingStyle.type != skill_pb2.Cooking.VegeTypes):
print "Error: invalid cooking type"
如何检查myCookingStyle.type是否为有效的枚举类型?
即:我如何做那个评论行
注意:我想避免对枚举类型的检查进行硬编码,因为我稍后可能会添加更多的VegeTypes,例如:POTATO = 3,ONION = 4
答案 0 :(得分:0)
如果我正确理解你的问题,当你使用proto时,如果在分配时给出了错误的类型,那么就会出现错误。
将相关代码包装在try...except
块中应该可以解决问题:
try:
proto = skill_pb2.Cooking()
proto.type = 6 # Incorrect type being assigned
except ValueError as e: # Above assignment throws a ValueError, caught here
print 'Incorrect type assigned to Cooking proto'
raise
else:
# Use proto.type here freely - if it has been assigned to successfully, it contains a valid type
print proto.type
...