我是这个网站的新手和一般编程所以请不要过于苛刻这个新问题。
正如这个问题的标题所说,我正在尝试用Python编写一个包含类的程序。这是一个应该在给定故事中找到单词的程序。这个故事有一个标题,一个GUID,一个主题,一个摘要和一个链接。在这种情况下,我希望该程序能够在故事的标题中找到单词。我做的子类应该做的伎俩不能正常工作。这是我到目前为止所尝试的内容:
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 Trigger(object):
def evaluate(self, story):
"""
Returns True if an alert should be generated
for the given news item, or False otherwise.
"""
raise NotImplementedError
class WordTrigger(object):
def __init__(self,word):
self.word = word
def is_word_in(self,text):
#check if self.word is in text
texter = text.lower()
for char in texter:
if char in str.punctuation :
char = ' '
#text_List.append(char)
text_List = text.split(' ')
for string in text_List:
if self.word == string:
return True
return False
class TitleTrigger(WordTrigger):
def evaluate(self,story):
print "story:", story.title
return self.is_word_in(story.title)
然而,当我测试程序时,我得到以下失败:“当标题出现在标题中时,标题触发器无法触发。”
问题1 :我做错了什么?
此外,我一般都无法理解课程。
问题2 :您能否建议在Python中引入类的简介?我尝试了一些来源,如Python文档,wikibooks和教程点,但我没有从这些来源变得更加明智。你有“更好”的东西吗?这可以是任何东西:书籍,网站,文章等等。
答案 0 :(得分:0)
首先,关于Python和面向对象编程的一些技巧:
self._word = word
。我建议您阅读PEP 8
我看到你正在使用str.punctuation,但str类型没有该属性。我想你想使用string
模块:
import string
if char in string.punctuation:
# do stuff
但是,我发现你没有使用代码的那部分,而是在迭代分割文本列表。我会做这样的事情:
def is_word_in(self, text):
_text = text.lower()
return self.word in _text.split(' ')
顺便说一句,我没有收到你之前说过的错误。