2015-09-04 120 views
0

即時通訊工作與模塊HTMLParser,並希望建立一個子類。但我無法調用超級構造函數,我做錯了什麼?Python調用超級構造函數

class CustomParser(HTMLParser): 

def __init__(self): 
    super(CustomParser, self).__init__() 

堆棧跟蹤:

Traceback (most recent call last): 
File "C:\Users\Marc\Phyton\rafafafaf\src\test.py", line 20, in <module> 
C = CustomParser() 
File "C:\Users\Marc\Phyton\rafafafaf\src\test.py", line 17, in __init__ 
super(CustomParser, self).__init__() 
TypeError: must be type, not classobj 
+0

任何stact trace? – WBAR

+0

對不起,添加它 – VanWarbux

回答

1

試試這個:

class CustomParser(HTMLParser): 
    def __init__(self): 
     HTMLParser.__init__(self) 

或者這樣:

class CustomParser(HTMLParser, object): 
    def __init__(self): 
     super(CustomParser, self).__init__(self) 

詳情: https://stackoverflow.com/a/9719731/320104

+0

對我來說同樣的錯誤。 – VanWarbux

+0

已編輯,請確認 – WBAR

2

如錯誤消息所示,HTMLParser是一箇舊式類(類型'classobj'),因此不支持協作式調用super()。從子類中調用父級方法的正確方法是直接訪問類,即:

class CustomParser(HTMLParser): 
    def __init__(self): 
     HTMLParser.__init__(self)