0
ProtoBuf 개체가 있습니다. 특정 필드가 명시 적으로 제공된 대 기본값을 사용하는 경우 검색하고 싶습니다.ProtoBuf 값이 기본값을 사용하는지 테스트합니다.
message vector_measurement
{
measurement x = 1;
measurement y = 2;
measurement z = 3;
}
...
message measurement
{
...
float value = 2;
...
}
나는 그것이 True
을 반환 HasField
사용, 아직 명확하지 않는 경우 경우 :
c = my_vector
print(c)
# x {
# value: 60.3813476562
# }
# y {
# value: 0.444311201572
# }
# z {
# }
print(c.x)
# value: 60.3813476562
print(c.z)
#
print(c.z==None)
# False
print(c.z.value)
# 0
print(c.HasField('x'), c.HasField('z'))
# (True, True)
print (c.z.HasField('value'))
# ValueError: Protocol message has no non-repeated submessage field "value"
표현 z
은 기본값을 사용하고 있는지 모르는 것 같다 문자열; 이걸 어떻게 나 스스로 발견 할 수 있니? 메시지가 메시지에 ByteSize()
를 호출하여 기본 경우