7
super()は、新しいスタイルのクラスに対して「TypeError:classobjではなく、typeでなければならない」を発生させます。
次の使用は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:Joachimは、新しいスタイルのクラスのインスタンスであることはであることと同等ではないと指摘しましたobject。私は何度も反対を読んでいるため、混乱しています(インスタンステストに基づく新しいスタイルのクラスインスタンステストのobject例:https : //stackoverflow.com/revisions/2655651/3)。