如何使用oneof字段动态实例化protobuf对象

时间:2018-04-12 18:43:13

标签: python reflection protocol-buffers

我有一个像这样的

定义的protobuf消息
message data {
  user string = 1;
  oneof event {
     server.login login = 1;
     server.register register = 2;
     server.delete delete = 3;
  }
}

现在我在python中有一个函数

def create_data_object(self, event)

现在事件可能是protos的实例

server.login
server.register
server.delete

现在根据proto的类型,它就像登录,注册或删除我想创建一个类似

的数据对象
dataobject = data(user="someuser", {type}=event)

其中type需要从传递的事件对象中确定。

现在请注意,我可以使用

之类的东西
type = event.DESCRIPTOR.full_name

然后使用某种切换条件并相应地实例化对象。但是,我不想走这条路,因为我必须更新库中添加新事件类型的所有内容。

我希望它确定用于查看event.DESCRIPTOR.full_name的类型参数的字段,并从数据原型中找出相应的字段

我怎么能在python中做到这一点?

0 个答案:

没有答案