2012-06-24 12 views
53

otrzymuję ten błąd:Python dziedziczenie: TypeError: Object .__ startowych __() przyjmuje żadnych parametrów

TypeError: object.__init__() takes no parameters 

gdy uruchomiony mojego kodu, tak naprawdę nie zobaczyć, co robię źle tutaj jednak:

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

Odpowiedz

71

Telefonujesz niewłaściwą nazwę klasy w super() wywołanie:

class SimpleHelloWorld(IRCReplyModule): 

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

Zasadniczo czego postanawiając jest 012.klasy obiektu, która nie przyjmuje żadnych parametrów.

Jest nieco zbędny, wiem, aby określić klasę, które już są w środku, dlatego w python3 można po prostu zrobić: super().__init__()

+4

@LucasKauffman: Właściwie nie sądzę jego bardzo głupio z ciebie. Może to być łatwo mylące pojęcie. Nie winię cię. – jdi

+1

Ryzykując obrażanie wielu Pythonians: That - imho - jest okropnym projektem językowym. Dziękuję za pomoc @jdi! –

+2

@JohannesFahrenkrug - Nie sądzę, że można by kogoś urazić, ponieważ został zidentyfikowany jako zły projekt i poprawiony w python3: https://docs.python.org/3/library/functions.html#super – jdi

Powiązane problemy