다음을 사용 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를 이해하고 싶습니다.
추신 : Joachim은 새로운 스타일의 인스턴스가되는 것과는 같지 않다고 지적했습니다 object
. 나는 그 반대를 여러 번 읽었으므로 혼란 스럽다 (인스턴스 테스트를 기반으로 한 새로운 스타일의 클래스 인스턴스 테스트 object
예 : https : //.com/revisions/2655651/3 ).
super()
새로운 스타일의 클래스 (및 객체)에서만 작동 하는 사실 은 HTML 문서 ( docs.python.org/library/functions.html#super )에 언급되어 있습니다.
super.__doc__
이전 스타일과 새로운 스타일에 대해 언급하지 않았 는지 궁금합니다 !