2012-06-24 42 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