忽略子类__init__方法 - 执行直接跳转到超类__init__

时间:2014-12-25 17:26:52

标签: python initializer html-parser

我正在使用HTMLParser来解析一些基本的,格式正确的HTML,并且出于各种原因,我们不想使用BeautifulSoup。我将HTMLParser子类化,实际的解析器工作正常。但是,未调用子类的init_方法。相反,当我创建一个新的子类对象时,HTMLParser的init方法被直接调用,而子类init根本就不会被调用。当我从HTMLParser.HTMLParser以及urllib.HTMLParser继承时会发生这种情况。这是代码:

class MyHtmlParser(htmllib.HTMLParser):

    def _init_(self, formatter):
        print("in init")
        htmllib.HTMLParser.__init__(self, formatter)        
        self.links = []
        self.is_li = False
        self.close_a = False
        self.close_li = False
        print "initialized"


    def get_links(self):
        return self.links

    def handle_starttag(self, tag, attrs):
        #some functionality here - this works

    def handle_endtag(self, tag):
        #some functionality here - this works

myparser = MyHtmlParser(formatter.NullFormatter)

1 个答案:

答案 0 :(得分:1)

您的功能定义中似乎缺少两个下划线。功能应该是:

def __init__(self, formatter):