下面使用super()
会引发一个类型错误:为什么?
>>> from HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
... def __init__(self):
... super(TextParser, self).__init__()
... self.all_data = []
...
>>> TextParser()
(...)
TypeError: must be type, not classobj
在StackOverflow:Python super() raises TypeError上也有类似的问题,错误的原因是User类不是新样式的类.但是,上面的类是一个新样式的类,因为它继承自object
:
>>> isinstance(HTMLParser(), object)
True
我错过了什么?我怎么用super()
,这里?
用HTMLParser.__init__(self)
而不是super(TextParser, self).__init__()
可以,但我想了解类型错误.
PS:Joachim指出,作为一个新样式的类实例并不等同于一个object
.我读了很多次相反的内容,因此感到困惑(基于object
实例测试的新型类实例测试示例:https://stackoverflow.com/revisions/2655651/3).