super () gera "TypeError: deve ser do tipo, não classobj" para a nova classe de estilo
O seguinte uso desuper()
gera um TypeError: por qu
>>> from HTMLParser import HTMLParser
>>> class TextParser(HTMLParser):
... def __init__(self):
... super(TextParser, self).__init__()
... self.all_data = []
...
>>> TextParser()
(...)
TypeError: must be type, not classobj
Existe uma pergunta semelhante no StackOverflow:Python super () gera TypeError, onde o erro é explicado pelo fato de a classe de usuário não ser uma classe de novo estilo. No entanto, a classe acima é uma classe de novo estilo, pois herda deobject
:
>>> isinstance(HTMLParser(), object)
True
O que estou perdendo? Como posso usarsuper()
, aqui
UsingHTMLParser.__init__(self)
ao invés desuper(TextParser, self).__init__()
funcionaria, mas eu gostaria de entender o TypeErro
PS: Joachim apontou que ser uma instância de nova classe de estilo não é equivalente a ser umobject
. Eu li o contrário várias vezes, daí a minha confusão (exemplo de teste de instância de classe de novo estilo baseado emobject
instância test:https: //stackoverflow.com/revisions/2655651/).