所以标题听起来有点令人困惑,但我会尝试彻底解释。我目前正在使用Python编写一个bot,它旨在根据提供给它的关键字对puns做出适当的响应。每个单词都有多个潜在的响应,但同样,每个单词都可以用于多个单词。
例如,如果找到cat_input
中的单词(见下文),它将从cat_output
生成随机响应。
cat_input= ['cat','purr','meow','claw','felidae','puss','paw']
cat_output= ["I know the purrfect pun for that one.",
"I only tell these puns beclaws I have to."
]
然而,'paw'和'claw'这个词也可用于其他动物,其他动物也可能具有相同的潜在输出,如下所示:
dog_input=['dog','woof','bark','paw','canine','pup','puppy','claw']
dog_output=["I only tell these puns beclaws I have to.",
"I knew a dog who was a little ruff on me."
]
正如你所看到的,这并不是最能引起标题问题的最佳方法:什么是最好的面向对象的方法,能够将某些单词分类为某些响应,重复次数较少,并且(如果可能的话) ),你能提出一个基本的例子来解释它的外观吗?
答案 0 :(得分:1)
也许它是抽象的,或者我没有真正得到你想要的东西。但为什么你有不同的输入?我觉得没关系...我会创建一个简单的词典,将每个单词与它的潜在输出相匹配,然后从中随机地grep ... ...
答案 1 :(得分:0)
如何创建Animal
和Dog
继承的基类Cat
?然后,您可以查看单词paw
是否与动物匹配,然后随机选择一个Animal
个实例。
答案 2 :(得分:0)
这是我将如何做到的:
import random
class Animal:
def __init__(self, keywords, outputs):
self.keywords = keywords
self.outputs = outputs
def inp(self, keyword):
if keyword in self.keywords:
self.outp()
def outp(self):
print(random.choice(self.outputs))
my_cat = Animal(["cat", "purr"], ["purrfect pun"])
my_cat.inp("purr")
对于可能针对多个动物的关键字,您可以这样做:
my_cat = Animal(...)
my_dog = Animal(...)
my_bonobo = Animal(...)
animals = [my_cat, my_dog, my_bonobo]
for animal in animals:
animal.inp("paw")
答案 3 :(得分:0)
试试这个:
(t1,t2) match {
case (Success(v1),Success(v2)) => new MyClass(v1,v2)
case (Failure(e),_) | (_,Failure(e)) => println(e.getMessage)
}
我希望这会有所帮助。如果它不能解决您的需求,请告诉我。此外,明智的做法是让用户更安全。您可以通过将它们添加到两个词典中来实现更多动物。另一种方法是多态继承,如果不起作用,你可以试试。