比方说,我定义了这样的protobuf消息
message Config {
oneof config{
A a = 1;
B b = 2;
}
}
现在在python代码中,当我解析Config的消息实例时,我可以使用
获得字段名称之一field = config.WhichOneof('config')
但是我应该如何使用获得的字段名访问A?我不想写这样的东西:
if field == 'a':
return config.a
else
return config.b
因为我只想使用a或b获取下划线值,所以我已经知道它的类型。有更好的解决方案吗?谢谢!
答案 0 :(得分:3)
您可以使用getattr
:
data = getattr(config, config.WhichOneof('config')).value
由于WhichOneof('config')
返回'a'
或'b'
,因此只需使用getattr
动态访问该属性。