Следующее использование 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: Йоахим указал, что экземпляр класса нового стиля не эквивалентен объекту
. много раз читал обратное, отсюда и мое замешательство (пример теста экземпляра класса в новом стиле, основанного на тесте экземпляра объекта
: https://stackoverflow.com/revisions/2655651/3) .