Die folgende Verwendung von super()
löst einen TypeError aus: warum?
>>> from HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
... def __init__(self):
... super(TextParser, self).__init__()
... self.all_data = []
...
>>> TextParser()
(...)
TypeError: must be type, not classobj
Es gibt eine ähnliche Frage auf StackOverflow: Python super() löst TypeError aus Der Fehler ist darauf zurückzuführen, dass es sich bei der Benutzerklasse nicht um eine Klasse des neuen Stils handelt. Die obige Klasse ist jedoch eine Klasse des neuen Stils, da sie von object
:
>>> isinstance(HTMLParser(), object)
True
Was übersehe ich? Wie kann ich die super()
hier?
Verwendung von HTMLParser.__init__(self)
代わりに super(TextParser, self).__init__()
funktionieren würde, aber ich würde gerne den TypeError verstehen.
PS: Joachim wies darauf hin, dass eine Instanz der neuen Stilklasse nicht gleichbedeutend ist mit einer object
. Ich habe viele Male das Gegenteil gelesen, daher meine Verwirrung (Beispiel für einen Klasseninstanztest neuen Stils auf der Grundlage von object
Instanztest: https://stackoverflow.com/revisions/2655651/3 ).