相关疑难解决方法(0)

对于新式类,super()引发"TypeError:必须是type,而不是classobj"

以下使用super()引发了一个TypeError:为什么?

>>> from  HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
...     def __init__(self):
...         super(TextParser, self).__init__()
...         self.all_data = []
...         
>>> TextParser()
(...)
TypeError: must be type, not classobj
Run Code Online (Sandbox Code Playgroud)

StackOverflow上有一个类似的问题:Python super()引发TypeError,其中错误的解释是用户类不是新式类.但是,上面的类是一个新式的类,因为它继承自object:

>>> isinstance(HTMLParser(), object)
True
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我怎么用super(),在这里?

使用HTMLParser.__init__(self)而不是super(TextParser, self).__init__()工作,但我想了解TypeError.

PS:Joachim指出,作为一个新式的实例并不等同于一个object.我多次反复阅读,因此我的困惑(基于object实例测试的新式类实例测试示例:https://stackoverflow.com/revisions/2655651/3).

python super typeerror superclass

331
推荐指数
6
解决办法
13万
查看次数

标签 统计

python ×1

super ×1

superclass ×1

typeerror ×1