以编程方式检查是否需要 google 协议缓冲区字段

The*_*CAL 4 python protocol-buffers

是否可以以编程方式检查给定的原型字段是否标记为requiredvs optional?我正在使用 python 并有一个FieldDescriptor对象,但找不到方法来确定该字段是否是必需的。

use*_*ica 5

快速浏览一下文档就会发现您FieldDescriptor应该有一个label属性来指示它是可选的、必需的还是重复的。

from google.protobuf.descriptor import FieldDescriptor

if fd.label == FieldDescriptor.LABEL_OPTIONAL:
    # do thing
elif fd.label == FieldDescriptor.LABEL_REQUIRED:
    # do other thing
else:
    # do third thing
Run Code Online (Sandbox Code Playgroud)