2015-05-16 2 views
1

Я пытаюсь использовать метод is_word_in() из TitleTrigger «s родительского класса WordTrigger, но я получаю NameError говоря is_word_is не определен. Я чувствую, что мне не хватает ключевой концепции наследования, как я могу это исправить?не удается получить доступ к метод, определенный в родительском классе

class NewsStory(object): 
    def __init__(self, guid, title, subject, summary, link): 
     self.guid = guid 
     self.title = title 
     self.subject = subject 
     self.summary = summary 
     self.link = link 
    def get_guid(self): 
     return self.guid 
    def get_title(self): 
     return self.title 
    def get_subject(self): 
     return self.subject 
    def get_summary(self): 
     return self.summary 
    def get_link(self): 
     return self.link 

class WordTrigger(Trigger): 
    def __init__(self, word): 
     self.word = word.lower() 
    def is_word_in(self, text): 
     words = text.split(' ') 
     for word in words: 
      word.strip(string.punctuation).lower() 
      if self.word == word: 
       return True 
     return False 

class TitleTrigger(WordTrigger): 
    def __init__(self, word): 
     WordTrigger.__init__(self, word) 
    def evaluate(self, story): 
     self.title = story.get_title() 
     if is_word_in(self.title): 
      return True 
     return False 

trigger = TitleTrigger('Soft') 
trigger.evaluate(NewsStory('', 'I prefer pillows that are soft.', '', '', '')) 

ответ

3

Вы используете функцию неправильно, то вам нужно будет вызвать его с self:

if self.is_word_in(self.title): 
    ^^^^^ 

Обратите внимание на дополнительные self. до is_word_in, который используется, чтобы сказать, что вы имеете в виду метод из пример.

+0

Каков эффект, когда self не используется? Что он пытается получить? – Jordan

+1

@Jordan, если self нет, python попытается найти объект с именем is_word_in в методе, в который вы его вызываете, что явно дает ошибку. –

+0

Ах! Делает полный смысл сейчас, большое спасибо :) – Jordan

Смежные вопросы