Bir google, bir MaleResponseMessage
veya FemaleResponseMessage
döndürebilmesi gereken yöntemi işaretleyebilir. gibigoogle bulut son nokta yöntemi
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
ile süper mesaj sınıfını ilan etme seçeneği elbette vardır belirtmek için bir yol var mı, diyelim ki, PersonResponseMessage
MaleResponseMessage
veya FemaleResponseMessage
ya sarmak için. Ancak yukarıdaki snippet'e benzer bir şey var mı?
DÜZENLEME:
kendi önerisini uygulamaya çalışıyorum, ben takıldı. İki mesaj türünün ortak olduğu tek şey, istektir: PersonRequest
için aynı istek alanları (ek bir boole female=true/false
ile). MaleResponseMessage
ve FemaleResponseMessage
'un ortak bir alanı yoktur. Bu yüzden ben cevap almak için
if request.female : # request.female == True
return get_female(etc, etc)
else: # request.female == False // implies male
return get_male(etc,etc)
kontrol @bossylobster gösterdiği gibi, bir uç nokta yöntemi kullanıyorum, ben için ???
kontrol etmek emin değilim
class PersonResponse(messages.Message):
if ??? :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
gibi bir şey gerekiyor. İlk önce, isinstance
veya type
hakkında düşündüm. Ama bunu nasıl yapardım? Aşağıdaki işler mi?
Sorunuz hakkında beğendiğim şey, aslında eşyalarınızı bildiğiniz gibi. Bu konuda sadece takıldınız. :) Eğer bossylobster ya da başka bir kişi yardım edemezse ama yine de oraya ulaşırsanız son çözümünüzü paylaşmayı unutmayın. – learner
@Katedral Pillon, 'messages.Message' alt sınıflarının ne yaptıklarını yanlış anlıyorsunuz. Bir protokol arabelleği kapsayıcısı tanımı oluşturmanız için oradasınız, böylece yalnızca statik alanları listeleyebilirsiniz, koşullu 'if' ifadelerine izin verilir. – bossylobster