私はPythonを使ってGoogle ProtoBufを受け取りました。その列挙値の値を文字列表現と比較しようとしています。 thisとthisに基づいて、私は必要な情報を得るためにenum_values_by_name
のようなものを使用できるはずです。おそらくそれは、私のいるProtobufは、多くのファイルで定義されているという事実に関連しているPythonで列挙された列挙を探し出すDESCRIPTOR for ProtoBuf
>>> type(my_message)
<class 'myObjects_pb2.myObject'>
>>> my_message
# nID: 53564
# nAge: 2
# type: OBJECT_CLASS_SIGN
# view: OBJECT_VIEW_FRONT
>>> my_message.type
# 1
>>> filter(lambda s: s.startswith('enum'), dir(my_message.DESCRIPTOR))
# ['enum_types', 'enum_types_by_name', 'enum_values_by_name']
>>> my_message.DESCRIPTOR.enum_types
# []
>>> my_message.DESCRIPTOR.enum_types_by_name
# {}
>>> my_message.DESCRIPTOR.enum_values_by_name
# {}
、そして私が欲しい列挙型は、私は輸入てるメインファイルで定義されていない。しかし、すべてのenum*
関連の属性は空です(ただし、my_message
のデコードに使用されます)?
なぜこれらの空のコレクションを取得していますか(さらに重要なことに)列挙型についての情報を見つけるにはどうすればよいですか?
_Editorial:Python言語とProtoBuf APIの設計については、情報を取得する正しい方法がしばしば非常に面倒で冗長であり、基本的に目標を達成するための関数を記述する必要があると言われています。 IMHO Pythonコミュニティは、プラグマティズムと利便性を評価していないようです(少なくとも他の類似言語と比較して)。 – Phrogz