2012-06-24 41 views
53

我得到這個錯誤:Python的繼承:類型錯誤:對象初始化.__ __()不帶任何參數

TypeError: object.__init__() takes no parameters 

運行我的代碼的時候,我實在不明白我在做什麼錯在這裏,但:

class IRCReplyModule(object): 

    activated=True 
    moduleHandlerResultList=None 
    moduleHandlerCommandlist=None 
    modulename="" 

    def __init__(self,modulename): 
     self.modulename = modulename 


class SimpleHelloWorld(IRCReplyModule): 

    def __init__(self): 
      super(IRCReplyModule,self).__init__('hello world') 

回答

71

你在你的超級調用錯誤的類名()調用:

class SimpleHelloWorld(IRCReplyModule): 

    def __init__(self): 
      #super(IRCReplyModule,self).__init__('hello world') 
      super(SimpleHelloWorld,self).__init__('hello world') 

基本上你解決到什麼是不帶參數的對象基類的。

它有點多餘了,我知道,有指定你已經是內部的類,這就是爲什麼在python3你可以這樣做:super().__init__()

+4

@LucasKauffman:其實我不認爲它很愚蠢的你。它很容易成爲一個令人困惑的概念。我不怪你。 – jdi

+1

面臨冒犯許多蟒蛇的風險:那 - imho - 是糟糕的語言設計。感謝您的幫助@jdi! –

+2

@JohannesFahrenkrug - 我不認爲你會冒犯任何人,因爲這被認爲是一個不好的設計,並在python3中修復:https://docs.python.org/3/library/functions.html#super – jdi