मेरे पास एक Google यह तरीका बता सकता है कि मुझे MaleResponseMessage
या FemaleResponseMessage
वापस करने में सक्षम होना चाहिए। वहाँ किएकाधिक प्रतिक्रिया संदेश के साथ Google क्लाउड एंडपॉइंट विधि
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
जैसे के साथ वहाँ निश्चित रूप से एक सुपर संदेश वर्ग घोषित करने का विकल्प है निर्दिष्ट करने के लिए एक रास्ता है, कहते हैं, PersonResponseMessage
या तो MaleResponseMessage
या FemaleResponseMessage
रैप करने के लिए। लेकिन क्या उपरोक्त स्निपेट के समान कुछ है?
संपादित करें:
अपने ही प्रस्ताव को लागू करने की कोशिश कर रहा है, मैं अटक गई। दो संदेश प्रकारों में एकमात्र चीज आम है: अनुरोध: PersonRequest
के लिए सटीक वही अनुरोध फ़ील्ड (अतिरिक्त बूलियन female=true/false
के साथ)। MaleResponseMessage
और FemaleResponseMessage
में कोई फ़ील्ड आम नहीं है। तो मैं एक endpoint विधि का उपयोग कर रहा हूँ, @bossylobster शो, जहां मैं
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)
मुझे आपके प्रश्न के बारे में क्या पसंद है यह है कि आप वास्तव में अपनी सामग्री को जानते हैं। आप इस मुद्दे पर फंस गए हैं। :) अपने अंतिम समाधान को साझा करना याद रखें अगर @ बॉसिलोबस्टर या कोई और मदद करने में सक्षम नहीं है लेकिन आप वैसे भी वहां पहुंचते हैं। – learner
@ केटर्रल पिल्लॉन, आप गलत तरीके से क्या कर रहे हैं 'संदेश। संदेश' उपclasses कर रहे हैं। वे आपके लिए प्रोटोकॉल बफर कंटेनर परिभाषा बनाने के लिए हैं, इसलिए आप केवल स्थिर फ़ील्ड सूचीबद्ध कर सकते हैं, कोई सशर्त 'if' कथन की अनुमति नहीं है। – bossylobster