TypeError: __init__() takes X positional arguments but ...
C_Dedev
-
C_Dedev -
C_Dedev -
Bonjour,
Lorsque je mets une valeur mon terminal m'indique qu'il y a une valeur de trop
Lorsque je retires cette valeur il me dit qu'il en manque une.
La valeur 5 (passée en 3e paramètre de
Lorsque je mets une valeur mon terminal m'indique qu'il y a une valeur de trop
Lorsque je retires cette valeur il me dit qu'il en manque une.
La valeur 5 (passée en 3e paramètre de
kid()) est la valeur qui pose problème :
def main():
class parent:
def __init__(self, var1, ):
self.var1 = 1
print(var1)
class kid(parent):
def __init__(self, var3, var4, var1, ):
super().__init__(self, var1, )
self.var3 = var3
self.var4 = var4
print(var1, var3, var4)
result = kid(1, 2, 5)
if __name__ == '__main__':
main()
A voir également:
- Unsupported operand type(s) for -: 'str' and 'int'
- Typeerror: list.append() takes no keyword arguments - Forum Python
- TypeError: 'int' object is not iterable ✓ - Forum Python
- TypeError: 'NoneType' object is not subscriptable - Forum Python
- TypeError: 'float' object is not subscriptable - Forum Python
- Uncaught TypeError: document.getElementsById is not a functi ✓ - Forum Javascript
8 réponses
Bonjour
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
En Python, l’indentation est primordiale, or par défaut le site ne la conserve pas.
Pour la conserver il faut utiliser les balises de code. Voir ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
On pourra commencer à essayer de t’aider quand tu auras reposté correctement ton code.
C_Dedev
j'ai pas pu modifier la publication donc le code est juste en dessous en réponse
Bonjour,
"il se contredit"
En fait un programme ne se contredit jamais, il fait exactement ce que tu lui a dit de faire :-)
"il se contredit"
En fait un programme ne se contredit jamais, il fait exactement ce que tu lui a dit de faire :-)
Bonjour,
Une question toute bête, il y a peut être une raison, mais pourquoi les paramètres sur la définition de tes fonctions se terminent par une virgule sans rien derrière ?
Une question toute bête, il y a peut être une raison, mais pourquoi les paramètres sur la définition de tes fonctions se terminent par une virgule sans rien derrière ?
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
Ces deux erreurs sont présentes dans ton code, à des endroits différents.
J'y ai vu trois autres erreurs.
Ces deux erreurs sont présentes dans ton code, à des endroits différents.
J'y ai vu trois autres erreurs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
def main():
class parent:
def __init__(self, var1, ):
self.var1 = 1
print(var1)
class kid(parent):
def __init__(self, var3, var4, var1, ):
super().__init__(self, var1, )
self.var3 = var3
self.var4 = var4
print(var1, var3, var4)
result = kid(1, 2, 5)
if __name__ == '__main__':
main()
lorsque je mets une valeur mon terminal m'indique qu'il y a une valeur de trop
lorsque je retires cette valeur il me dit qu'il en manque une.
le 5 en gras italique souligné est la valeur qui pose problème
Quand je teste de mon coté, sans les virgules (au moins pour écrire du code propre), je ne fais pas le même constat.
Tu devrais bien lire les indications de ton IDE dans chaque cas.
Sans la valeur problématique
Avec la valeur
IDE:PyCharm (2021.3.2)
C:\Users\alan-\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/alan-/PycharmProjects/pythonProject/test.py
Traceback (most recent call last):
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 21, in <module>
main()
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 17, in main
result = kid(1, 2, 5)
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 11, in __init__
super().__init__(self, var1)
TypeError: __init__() takes 2 positional arguments but 3 were given
Process finished with exit code 1
Avec la valeur
C:\Users\alan-\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/alan-/PycharmProjects/pythonProject/test.py
Traceback (most recent call last):
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 21, in <module>
main()
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 17, in main
result = kid(1, 2)
TypeError: __init__() missing 1 required positional argument: 'var1'
Process finished with exit code 1
IDE:PyCharm (2021.3.2)
Je suis pas très fort en devinette mais comme ca je dirais que l'ide indique un problème a trois endroits dans le premier résultat et seulement 2 dans le deuxième
a partir de là je peut définir en tant qu'amateur qui développe en pur code depuis 2 semaines
(et qui donc par conséquent n'a peut être pas bien capté la façon dont l'ide s'exprime)
soit il y a deux erreurs, une a la ligne 17 et une a la ligne 11 (scénario le plus probable au vu de votre réaction)
soit il y a une erreur a la ligne 11 impliquant la ligne 17
a partir de là je peut définir en tant qu'amateur qui développe en pur code depuis 2 semaines
(et qui donc par conséquent n'a peut être pas bien capté la façon dont l'ide s'exprime)
soit il y a deux erreurs, une a la ligne 17 et une a la ligne 11 (scénario le plus probable au vu de votre réaction)
soit il y a une erreur a la ligne 11 impliquant la ligne 17
Oui, c’est un peu ta seconde option.
Maintenant que tu as commencé à regarder et pas juste jeter un coup d’œil, on peut commencer à t’expliquer.
Maintenant que tu as commencé à regarder et pas juste jeter un coup d’œil, on peut commencer à t’expliquer.
#cette ligne se passe de commentaires
C:\Users\alan-\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/alan-/PycharmProjects/pythonProject/test.py
#là l’IDE t’informe qu’il va te montrer les derniers appels, c’est à dire les étapes du code qu’il a exécutées et qui sautent d’un endroit à l’autre du code
Traceback (most recent call last):
#premier appel, à la.ligne 21
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 21, in <module>
main()
#second appel à la ligne 17
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 17, in main
result = kid(1, 2, 5)
#3eme appel à la ligne 1q
File "C:\Users\alan-\PycharmProjects\pythonProject\test.py", line 11, in __init__
super().__init__(self, var1)
#et maintenant, il t’annonce l’erreur qu’il a rencontrée lors du 3eme appel
TypeError: __init__() takes 2 positional arguments but 3 were given
#et ici ce que ça donne sur le programme final: il s’est arrêté en disant « 1 » qui signifie ça n’a pas marché
Process finished with exit code 1
Bonjour,
Ca marche mieux ainsi:
Ca marche mieux ainsi:
def main():
class parent:
def __init__(self, var1):
self.var1 = var1
class kid(parent):
def __init__(self, var1,var2,var3):
super().__init__(var1)
self.var2 = var2
self.var3 = var3
def __repr__(self):
return('{} {} {}'.format(self.var1,self.var2,self.var3))
result = kid(1,2,3)
print(result)
if __name__ == '__main__':
main()