Python héritage: TypeError: object.__init__() ne prend pas de paramètres
J'obtiens cette erreur:
TypeError: object.__init__() takes no parameters
lors de l'exécution de mon code, je ne vois vraiment pas ce que je fais mal ici:
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')
Vous devez vous connecter pour publier un commentaire.
Vous appelez le mauvais nom de la classe dans votre appel super ():
Essentiellement à ce que vous êtes en train de résoudre, c'est la
__init__
de l'objet de la classe de base qui ne prend pas de paramètres.Son un peu redondant, je sais, d'avoir à spécifier la classe que vous êtes déjà à l'intérieur de l', c'est pourquoi dans python3 il vous suffit de faire:
super().__init__()
Cela m'a mordu deux fois récemment (je sais je devrais avoir appris de mon erreur la première fois) et l'on a accepté la réponse n'a pas aidé moi, soit le temps pendant qu'il est encore fraîche dans mon esprit, j'ai pensé que je voudrais présenter ma propre réponse juste au cas où quelqu'un d'autre est en cours d'exécution dans ce (ou j'ai besoin de ce nouveau dans l'avenir).
Dans mon cas, le problème est que j'ai été en passant un kwarg dans l'initialisation de la sous-classe, mais dans la superclasse ce mot clé arg a ensuite été transmis mais dans l'appel super ().
Je pense toujours à ces types de choses sont à leur meilleur avec un exemple:
Pour résoudre cela, j'ai juste besoin de modifier la commande que je fais les choses dans le Foo.__init__ de la méthode; par exemple: