我工作的MIT OCW 6.00習題集的一個遺傳構造,和我有以下代碼...在Python
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()
相同,除了一個在一個故事的主題中查找一個單詞,而另一個單獨查找摘要。這兩個人通過自己的構造函數就可以很好的完成測試,這看起來很奇怪。
如果需要的話,但如果問題僅僅是在代碼是如何測試我的課怪癖我並不真的需要知道的怪癖就是我可以包括測試代碼。我真的很想知道未來的情況是,子類是否會自動繼承它們的超類構造函數,如果它們(子類)沒有定義它們自己的類,就好像它們如何從超類中繼承其他方法。
爲什麼選擇Python 2.5?:) –
是的,所有類都繼承其超類的所有方法,包括'__init__'。至於你爲什麼得到你的錯誤,很難說這一點,因爲你沒有顯示錯誤是什麼。 – BrenBarn
「當我運行提供的測試腳本時,它會拋出一個錯誤」 - 可能測試實用程序是專門查找是否覆蓋了__init__。 – tdelaney