Вы можете сделать кортеж из всех методов и затем вызывать их, пока один из них не вернет что-то:
def answer(self):
methods = (self.get_greeting, self.get_health, self.get_weather)
for m in methods:
res = m()
if res:
return res
return "I don't understand"
Редактировать
Если вы действительно хотите создать многометодов и ваша функция answer()
пробует их все, не сообщая об этом явно, вы можете использовать этот код:
def answer(self):
getters = (v for k, v in self.__class__.__dict__.items() if k.startswith("get_"))
for method in getters:
res = method(self)
if res:
return res
return "I don't understand"
Edit 2
Если ваша система простополучает строку в качестве входных данных и генерирует из нее предопределенные выходные данные. Вы можете немного ее упростить:
knowledge = [
(["hello", "hi"], "Hi There"),
(["how are you", "how do you do"], "I am fine"),
(["how is the weather", "is it cold today"], "It is warm")
]
def answer(question):
for inputs, answer in knowledge:
if question in inputs:
return answer
return "I don't understand"
print(answer("hello"))
Используя этот подход, добавить новую фразу в чат-бота так же просто, как добавитьстрока к структуре данных знаний.