如何从类(在HTMLParser中)将数据传递给另一个函数?

如何从类(在HTMLParser中)将数据传递给另一个函数?,第1张

概述我开始学习 python.我的 python版本是3.1 我以前从未学过OOP, 所以我对HTMLParser感到困惑. from html.parser import HTMLParserclass parser(HTMLParser):def handle_data(self, data): print(data)p = parser()page = """<html>< @H_301_0@ @H_301_0@ 我开始学习 python.我的 python版本是3.1

我以前从未学过OOP,
所以我对HTMLParser感到困惑.

from HTML.parser import HTMLParserclass parser(HTMLParser):def handle_data(self,data):      print(data)p = parser()page = """<HTML><h1>Title</h1><p>I'm a paragraph!</p></HTML>"""p.Feed(page)

我会得到这个:

Title

I’m a paragraph!

我希望将这些数据传递给函数,我该怎么办?

抱歉我的英语不好,谢谢你的帮助!

解决方法 我没有查看HTMLParser模块本身,但我可以看到Feed固有地调用handle_data,它在派生类中执行打印. @ ron的回答建议将数据直接传递给你的函数,这完全没问题.但是,由于您是OOP的新手,可以查看此代码.

这是Python,2.x,但我认为唯一可以改变的是包位置,HTML.parser而不是HTMLParser.

from HTMLParser import HTMLParserclass MyParser(HTMLParser):    def handle_data(self,data):        self.output.append(data)    def Feed(self,data):        self.output = []        HTMLParser.Feed(self,data)p = MyParser()page = """<HTML><h1>Title</h1><p>I'm a paragraph!</p></HTML>"""p.Feed(page)print p.outputoutput['Title',"I'm a paragraph!"]

在这里,我将重写HTMLParser的Feed方法.相反,当调用p.Feed(页面)时,它将调用我的方法,该方法创建/设置一个名为output的实例变量到一个空列表,然后调用基类中的Feed方法(HTMLParser)并继续它的内容通常会.因此,通过重写Feed方法,我可以做一些额外的事情(添加一个新的输出变量). handle_data方法类似地是覆盖方法.事实上,HTMLParser的handle_data方法甚至没有做任何事情……根本没有(根据文档.)

所以,只是为了澄清……

你调用p.Feed(页面)调用MyParser.Feed方法
MyParser.Feed将变量self.output设置为空列表,然后调用HTMLParser.Feed
handle_data方法将行添加到输出列表的末尾.

您现在可以通过调用p.output来访问数据.

@H_301_0@ 总结

以上是内存溢出为你收集整理的如何从类(在HTMLParser中)将数据传递给另一个函数?全部内容,希望文章能够帮你解决如何从类(在HTMLParser中)将数据传递给另一个函数?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1075238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存