2012-06-24 24 views
53

me sale este error:Python herencia: TypeError: Object .__ init __() no toma ningún parámetro

TypeError: object.__init__() takes no parameters 

cuando se ejecuta el código, yo realmente no ver lo que estoy haciendo mal aquí, sin embargo:

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') 

Respuesta

71

usted está llamando el nombre de clase mal en su super() llamada:

class SimpleHelloWorld(IRCReplyModule): 

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

Esencialmente lo que está resolviendo es elde la clase base de objeto que no toma params.

Es un poco redundante, lo sé, a tener que especificar la clase que ya está dentro de, por lo que en python3 sólo se puede hacer: super().__init__()

+4

@LucasKauffman: En realidad no creo que su muy tonto de ti. Puede ser un concepto confuso. No te culpo. – jdi

+1

A riesgo de ofender a muchos Pythonians: That - imho - es un diseño de lenguaje terrible. Gracias por su ayuda @jdi! –

+2

@JohannesFahrenkrug - No creo que ofendería a nadie, porque eso se identificó como un mal diseño y se corrigió en python3: https://docs.python.org/3/library/functions.html#super – jdi

Cuestiones relacionadas