2015-09-04 4 views
0

im работает с модулем HTMLParser и хочет создать подкласс. Но я не могу назвать супер конструктор, что я делаю неправильно?Python call super constructor

class CustomParser(HTMLParser): 

def __init__(self): 
    super(CustomParser, self).__init__() 

StackTrace:

Traceback (most recent call last): 
File "C:\Users\Marc\Phyton\rafafafaf\src\test.py", line 20, in <module> 
C = CustomParser() 
File "C:\Users\Marc\Phyton\rafafafaf\src\test.py", line 17, in __init__ 
super(CustomParser, self).__init__() 
TypeError: must be type, not classobj 
+0

любой устойчивый след? – WBAR

+0

извините, добавлено – VanWarbux

ответ

1

Попробуйте это:

class CustomParser(HTMLParser): 
    def __init__(self): 
     HTMLParser.__init__(self) 

Или это:

class CustomParser(HTMLParser, object): 
    def __init__(self): 
     super(CustomParser, self).__init__(self) 

Детали: https://stackoverflow.com/a/9719731/320104

+0

Такая же ошибка для меня. – VanWarbux

+0

отредактирован, пожалуйста, проверьте – WBAR

2

Как сказано в сообщении об ошибке, HTMLParser является классом старого стиля (тип «classobj») и, как таковой, не поддерживает совместный вызов super(). Правильный способ вызова методов родителя из подкласса - это прямой доступ к классу, то есть:

class CustomParser(HTMLParser): 
    def __init__(self): 
     HTMLParser.__init__(self)