Tôi có phương pháp có thể xác định được google mà tôi cần để có thể trả về số MaleResponseMessage
hoặc FemaleResponseMessage
. Có cách nào để xác định rằng chẳng hạn như vớiphương thức điểm cuối đám mây của google với nhiều thông báo phản hồi
@endpoints.method(message_types.VoidMessage, [MaleResponseMessage, FemaleResponseMessage])
Có tất nhiên tùy chọn khai báo một lớp thông báo siêu, nói, PersonResponseMessage
quấn hoặc MaleResponseMessage
hoặc FemaleResponseMessage
. Nhưng có cái gì đó tương tự như đoạn trên?
EDIT:
Cố gắng triển khai đề xuất của riêng tôi, tôi bị kẹt. Điều duy nhất mà hai loại thông báo có điểm chung là yêu cầu: các trường yêu cầu chính xác giống nhau (với boolean bổ sung female=true/false
) cho PersonRequest
. Các MaleResponseMessage
và FemaleResponseMessage
không có trường chung. Vì vậy, tôi đang sử dụng một phương pháp thiết bị đầu cuối, như chương trình @bossylobster, nơi tôi kiểm tra
if request.female : # request.female == True
return get_female(etc, etc)
else: # request.female == False // implies male
return get_male(etc,etc)
Đối với câu trả lời, tôi cần một cái gì đó giống như
class PersonResponse(messages.Message):
if ??? :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
Tôi không chắc chắn những gì để kiểm tra ???
cho. Trước tiên, tôi nghĩ về isinstance
hoặc type
. Nhưng tôi sẽ làm thế nào? Công việc dưới đây có được không?
class PersonResponse(messages.Message):
if type(Message()) == MaleResponseMessage :
item = messages.MessageField(MaleResponseMessage,1)
else:
item = messages.MessageField(FemaleResponseMessage,1)
Điều tôi thích về câu hỏi của bạn là bạn dường như thực sự biết nội dung của mình. Bạn chỉ bị mắc kẹt về vấn đề này. :) Hãy nhớ chia sẻ giải pháp cuối cùng của bạn nếu @bossylobster hoặc một người nào khác không thể giúp bạn nhưng bạn vẫn đạt được điều đó. – learner
@Katedral Pillon, bạn đang hiểu nhầm các lớp con 'messages.Message' đang làm gì. Chúng có sẵn cho bạn để tạo một định nghĩa vùng chứa bộ đệm giao thức, vì vậy bạn chỉ có thể liệt kê các trường tĩnh, không cho phép các câu lệnh if' có điều kiện. – bossylobster