私はグーグルがaMaleResponseMessageまたはのいずれかを返すことができる必要があるメソッドを指定することができFemaleResponseMessageます。それを指定する方法はありますか?
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
もちろん、スーパーメッセージクラスを宣言するオプションもあります。たとえば、またはのいずれかPersonResponseMessageをラップします。しかし、上記のスニペットに似たものはありますか?MaleResponseMessageFemaleResponseMessage
編集:
自分の提案を実行しようとして、行き詰まりました。2つのメッセージタイプに共通するのはリクエストだけです。まったく同じリクエストフィールド(追加のブール値をfemale=true/false含む)PersonRequest。MaleResponseMessageとにFemaleResponseMessageは共通のフィールドがありません。だから私は@bossylobsterが示すように、1つのエンドポイントメソッドを使用しています。
if request.female : # request.female == True
return get_female(etc, etc)
else: # request.female == False // implies male
return get_male(etc,etc)
応答には、次のようなものが必要です
class PersonResponse(messages.Message):
if ??? :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
何をチェックすればいいのかわかりません???。isinstanceまず、またはについて考えましtypeた。しかし、どうすればよいでしょうか。以下は機能しますか?
class PersonResponse(messages.Message):
if type(Message()) == MaleResponseMessage :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)