为了账号安全,请及时绑定邮箱和手机立即绑定

__init__ Python 中的自动运行方法

__init__ Python 中的自动运行方法

喵喵时光机 2022-08-25 13:43:25
我试图解析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 wordsc = 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我的错在哪里?
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

我相信我们可以让你的班级工作。您的代码现在确实正在运行,但是由于您似乎只对 的返回值感兴趣,因此可能必须单独调用: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()


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 112 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号