Следующее использование 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
В StackOverflow есть аналогичный вопрос: Python super() вызывает TypeError, где ошибка объясняется тем, что класс пользователя не является новым стилем класс. Однако класс выше является классом нового стиля, поскольку он наследует от object
:
>>> isinstance(HTMLParser(), object)
True
Что мне не хватает? Как я могу использовать super()
здесь?
Использование HTMLParser.__init__(self)
вместо super(TextParser, self).__init__()
будет работать, но я хотел бы понять TypeError.
PS: Йоахим указал, что это экземпляр класса нового стиля не эквивалентен object
. Я читал противоположное много раз, следовательно, мое замешательство (пример теста экземпляра класса нового стиля, основанного на тесте экземпляра object
: https://stackoverflow.com/revisions/2655651/3).