我正在使用模块HTMLParser并想要创建一个子类。但我无法调用超级构造函数,我做错了什么?
class CustomParser(HTMLParser):
def __init__(self):
super(CustomParser, self).__init__()
堆栈跟踪:
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 :(得分:2)
正如错误消息所示,HTMLParser
是旧式(类型'classobj'),因此不支持协作super()
调用。从子类调用父方法的正确方法是直接类访问,即:
class CustomParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
答案 1 :(得分:1)
试试这个:
class CustomParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
或者这个:
class CustomParser(HTMLParser, object):
def __init__(self):
super(CustomParser, self).__init__(self)