TypeError: __init__() prend exactement 3 arguments (2)
J'ai vu quelques réponses ici sur mon erreur mais sa ne m'a aidé. Je suis un noob absolu des cours sur le langage python et juste commencé à faire de ce code de retour en septembre. De toute façon avoir un coup d'oeil à mon code
class SimpleCounter():
def __init__(self, startValue, firstValue):
firstValue = startValue
self.count = startValue
def click(self):
self.count += 1
def getCount(self):
return self.count
def __str__(self):
return 'The count is %d ' % (self.count)
def reset(self):
self.count += firstValue
a = SimpleCounter(5)
et c'est l'erreur que je reçois
Traceback (most recent call last):
File "C:\Users\Bilal\Downloads\simplecounter.py", line 26, in <module>
a = SimpleCounter(5)
TypeError: __init__() takes exactly 3 arguments (2 given
Pour info, votre classe doit hériter de
object
(google pour python nouvelle-classes de style si vous êtes curieux de savoir pourquoi)
OriginalL'auteur Bilal Haider | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
Votre
__init__()
définition exige les deux unstartValue
et unfirstValue
. Donc, vous auriez à passer les deux (c'est à direa = SimpleCounter(5, 5)
) pour rendre ce code fonctionne.Cependant, j'ai l'impression qu'il y a un peu plus profonde confusion ici à l'œuvre:
Pourquoi avez-vous stocker
startValue
àfirstValue
et de le jeter ensuite? Il me semble que vous avez tort de penser que les paramètres de__init__
deviennent automatiquement des attributs de la classe. Ce n'est pas de la sorte. Vous devez les affecter de manière explicite. Et puisque les deux valeurs sont égales àstartValue
, vous n'avez pas besoin de la passer au constructeur. Vous pouvez simplement attribuer àself.firstValue
comme suit:OriginalL'auteur senderle
La
__init__()
définition des appels pour 2 valeurs d'entrée,startValue
etfirstValue
. Vous avez seulement fourni une valeur.Maintenant, si vous avez réellement besoin de 2 valeurs est une autre histoire.
startValue
est uniquement utilisée pour définir la valeur defirstValue
, de sorte que vous pouvez redéfinir les__init__()
d'utiliser un seul:OriginalL'auteur Michael Berkowski