用类实现python程序

2024-04-25 11:44:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是这个网站和编程新手,所以请不要对这个新问题太苛刻。在

正如这个问题的标题所说,我试图用Python编写一个包含类的程序。它是一个在给定故事中寻找单词的程序。这个故事有一个标题,一个指南,一个主题,一个摘要和一个链接。在这种情况下,我希望程序能在故事的标题中找到单词。不过,我创建的子类不能正常工作。以下是我迄今为止所做的尝试:

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) 

然而,当我测试这个程序时,我得到了以下失败:“当单词出现在标题中时,title触发器无法启动。”

问题1:我做错了什么?在

此外,我在理解一般的类时遇到了困难。在

问题2:请您提供一个关于Python类的介绍的无障碍参考资料?我尝试了一些资源,比如Python文档、wikibooks和tutorials,但是从这些资源中我并没有变得更聪明。你有“更好”的吗?这可以是任何东西:一本书,一个网站,一篇文章,等等。在


Tags: textinself程序标题getreturntitle
1条回答
网友
1楼 · 发布于 2024-04-25 11:44:53

首先,关于Python和面向对象编程的一些提示:

  1. 最好将属性视为公共属性,而不是使用getter和setter。如果要更改类的实现,可以尝试使用properties。在
  2. 如果您想要在类之外不使用的变量,请在变量名处使用下划线:self._word = word。在
  3. 尽量在方法之间留空行。在

我建议你阅读PEP 8

我看你在用结构标点,但str类型没有该属性。我想您想使用string模块:

import string
if char in string.punctuation:
    # do stuff

但是,我看到您没有使用这部分代码,而是在迭代分割文本列表。我会这样做:

^{pr2}$

顺便说一句,我没听明白你之前说的那个错误。在

相关问题 更多 >

    热门问题