次の使用は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 classobjStackOverflowにも同様の質問があります。Pythonのsuper()がTypeErrorを発生させます。エラーは、ユーザークラスが新しいスタイルのクラスではないという事実によって説明されます。ただし、上記のクラスは以下から継承するため、新しいスタイルのクラスobjectです。
>>> isinstance(HTMLParser(), object)
True何が欠けていますか?どうすればsuper()ここで使用できますか?
のHTMLParser.__init__(self)代わりにsuper(TextParser, self).__init__()を使用すると機能しますが、TypeErrorを理解したいと思います。
PS:Joachimは、新しいスタイルのクラスのインスタンスであることはであることと同等ではないと指摘しましたobject。私は何度も反対を読んでいるため、混乱しています(インスタンステストに基づく新しいスタイルのクラスインスタンステストのobject例:https : //stackoverflow.com/revisions/2655651/3)。
super()新しいスタイルのクラス(およびオブジェクト)でのみ機能するという事実は、HTMLドキュメント(docs.python.org/library/functions.html#super)で言及されています。
                
super.__doc__が古いスタイルと新しいスタイルについて何も触れていないのはなぜでしょうか。