2014-12-25 3 views
0

Я использую HTMLParser для анализа некоторого базового, хорошо сформированного HTML и по разным причинам не хочу использовать BeautifulSoup. Я подклассифицировал HTMLParser, и фактический парсер отлично работает. Однако метод init_ подкласса не вызывается. Вместо этого, когда я создаю новый объект подкласса, метод init HTMLParser вызывается непосредственно, а подкласс init никогда не вызывается вообще. Это происходит, когда я наследую HTMLParser.HTMLParser, а также от urllib.HTMLParser. Вот код:Подкласс _init_ метод игнорируется - выполнение переходит прямо к суперклассу _init_

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

Похоже, что в определении функции отсутствует два символа подчеркивания. Эта функция должна быть:

def __init__(self, formatter): 
+0

О, ничего себе. Огромное спасибо. Я никогда не понимал, что это двойной знак подчеркивания. – bsg