__init__ Python 中的自动运行方法

我试图解析rss,并通过某些单词使它们的花絮df


我的代码有4个部分


第 1 部分,初始化函数


class News:

        def __init__(self, rss_dict, t1, t2, filename):

            self.rss_dict = rss_dict

            self.t1 = t1

            self.t2 = t2

            self.filename = filename

            self.print_headlines_test()

            self.write_and_read()

            self.certain_words()

第2部分(这是类新闻的方法),获取标题方法


def print_headlines_test(self):

        for key,url in self.rss_dict.items():

            feed = feedparser.parse(url)


        headlines = []


        allheadlines = []


        for newsitem in feed['items']:

            headlines.append(newsitem['title'])


        for key,url in self.rss_dict.items():

            allheadlines.extend(headlines)

        self.allheadlines = allheadlines

第3部分(这是类新闻的方法),编写所有新闻的csv文件并在熊猫中读取


 def write_and_read(self):

        header = ['Tittle'] 


        with open(self.filename, 'w', encoding='utf-8-sig') as csvfile:

            writer = csv.writer(csvfile, delimiter=',')


            writer.writerow(i for i in header) 


            for a  in zip(self.allheadlines):

                writer.writerow((a))



            df = pd.read_csv(self.filename)


        self.df = df


        return df

第4部分(这是类新闻的方法),通过某些单词在pandas数据帧中搜索


def certain_words(self):

        result = self.df.apply(lambda x: x.str.contains(self.t1, na=False,

                                    flags = re.IGNORECASE, regex=True)).any(axis=1)

        result2 = self.df.apply(lambda x: x.str.contains(self.t2, na=False,

                                    flags = re.IGNORECASE, regex=True)).any(axis=1)

        return self.df[result&result2]

我的目的是自动运行(自动启动)我的:,并且只是通过three methodsprint_headlines_testwrite_and_readcertain words


c = News(my_dict_of_rss, target1,target2,'filename.csv')与方法,但这返回我什么都没有__init__output


当我使用时


c = News(my_dict_of_rss,target1,target2,'filename.csv')

和/或单独它是作品c.print_headlines_test()c.write_and_read()c.certain_words()


TL;DR有1个方法和3个,为什么它们没有通过启动对象自动运行,而是单独启动?__init__other methodsclassclassarguments


我的错在哪里?


喵喵时光机
浏览 113回答 1
1回答

宝慕林4294392

我相信我们可以让你的班级工作。您的代码现在确实正在运行,但是由于您似乎只对 的返回值感兴趣,因此可能必须单独调用:certain_words()class News:    def __init__(self, rss_dict, t1, t2, filename):        # init elided, but just these two functions called        self.print_headlines_test()        self.write_and_read()    def print_headlines_test(self):        # processing elided, except:        self.allheadlines = allheadlines    def write_and_read(self):        # processing elided, except the next line (Note no return)        self.df = df    def certain_words(self):        # processing elided, except for this return        return self.df[result & result2]# client code is now two lines:c = News(my_dict_of_rss, target1, target2, 'filename.csv')words = c.certain_words()# If you don't care about keeping the instance 'c' around, then you can do it in one line:words = News(my_dict_of_rss, target1, target2, 'filename.csv').certain_words()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python