我正在研究麻省理工学院6.00开放式课程的一个习题集,我有以下代码。。。在class Trigger(object):
def evaluate(self, story):
"""
Returns True if an alert should be generated
for the given news item, or False otherwise.
"""
raise NotImplementedError
# Whole Word Triggers
# Problems 2-5
# WordTrigger
class WordTrigger(Trigger):
def __init__(self, word):
self.word = word
def is_word_in(self, text):
word = self.word.lower()
text = text.lower()
#Remove punc and split text
for ch in string.punctuation:
text = text.replace(ch, ' ')
splitText = text.split(' ')
#Check if word is in text
return word in splitText
# TitleTrigger
class TitleTrigger(WordTrigger):
## def __init__(self, word):
## self.word = word
def evaluate(self, story):
return self.is_word_in(story.get_title())
我最初没有注释掉TitleTrigger()中的构造函数,但是当我运行所提供的测试脚本时,当测试实用程序试图调用我的TitleTrigger()类时,它抛出了一个错误。我不知道出了什么问题,所以我在解决方案代码达到顶峰,他们已经注释掉了构造函数,所以我就是这样做的,而且运行得很好。这给我留下了三个问题。。。在如果子类没有在子类中定义,那么子类将自动继承其超类的构造函数,这是正确的吗?当我把这件事说出来的时候,似乎就是这样。在
我在TitleTrigger()中使用的构造函数与它的超类WordTrigger()中的构造函数完全相同,那么我是在子类中定义它还是允许子类继承它又有什么关系呢?在
我还有另外两个WordTrigger()的子类,它们与TitleTrigger()相同,只是一个查找故事主题中的一个单词,另一个查找摘要。这两个通过了他们自己的构造函数的测试,这看起来真的很奇怪。在
如果需要的话,我可以包含测试代码,但是如果问题只是代码如何测试我的类的一个怪癖,我不需要知道这个怪癖是什么。我真正想知道的是,对于将来的情况,如果子类(子类)不定义自己的超类构造函数,子类是否会自动继承它们的超类构造函数,就像它们如何从超级类继承其他方法一样。在