2012-06-24 7 views
53

ich diesen Fehler:Python Vererbung: Typeerror: object .__ init __() nimmt keine Parameter

TypeError: object.__init__() takes no parameters 

wenn mein Code ausgeführt wird, ich weiß nicht wirklich sehen, was ich hier falsch tun aber:

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

Antwort

71

Sie den falschen Klassennamen in Ihrem Super() aufrufen Aufruf:

class SimpleHelloWorld(IRCReplyModule): 

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

im Wesentlichen ist das, was Sie sind die Lösung der 012.der Objekt-Basisklasse, die keine Parameter akzeptiert.

Es ist ein bisschen überflüssig, ich weiß, haben die Klasse angeben, die Sie bereits innerhalb von, weshalb in python3 ist, können Sie einfach tun: super().__init__()

+4

@LucasKauffman: Eigentlich seine Ich glaube nicht, sehr Dumm von dir. Es kann leicht ein verwirrendes Konzept sein. Ich beschuldige dich nicht. – jdi

+1

Auf die Gefahr, viele Pythonianer zu beleidigen: Das - imho - ist schreckliches Sprachdesign. Danke für deine Hilfe @jdi! –

+2

@JohannesFahrenkrug - Ich glaube nicht, dass du jemanden beleidigen würdest, denn das wurde als schlechtes Design erkannt und in python3 behoben: https://docs.python.org/3/library/functions.html#super – jdi

Verwandte Themen