St = Student() TypeError: __init__() missing 2 required pos
Résolu
Bonjour,
Je suis débutant en python. Voici mon code
Lorsque j'exécute :
... j'ai l'erreur :
Comment résoudre cette erreur ?
Merci pour toute aide...
Je suis débutant en python. Voici mon code
class Student: def __init__(self, name, userid, rep): self.name = name self.userid = userid self.rep = rep def describ_std(self) : name = input("Enter name: ") userid = int(input("Enter user id: ")) rep = int(input("Enter rep: ")) def typing(self): print(name,userid,rep ) karl = Student.describ_std() def main(): karl.describ_std() karl.typing() main()
Lorsque j'exécute :
st = Student()
... j'ai l'erreur :
TypeError: __init__() missing 2 required positional arguments: 'sid' and 'snom'
Comment résoudre cette erreur ?
Merci pour toute aide...
A voir également:
- St = Student() TypeError: __init__() missing 2 required pos
- St sportytrader - Télécharger - Médias et Actualité
- Play st - Télécharger - Téléchargement & Transfert
- Torrent9.st ✓ - Forum Téléchargement
- Driver lecteur HL-DT-ST DVDRAM GSA-T50N ✓ - Forum Pilotes (drivers)
- HL-DT-ST DVDRAM GT30N - Forum Logiciels
1 réponse
Bonjour,
La méthode
... qui au niveau de
Les autres appels de méthodes sont de la forme
On notera en particulier que l'appel
D'autres choses ne vont pas. Ta méthode
Après correction ton code pourrait ressembler à ceci :
La méthode
__init__(appelée parfois constructeur) est appelée lorsque tu appelles
Student(). Comme tu n'as passé aucun argument entre parenthèse, au niveau de la classe,
selfest (toujours) renseigné, mais pas
name,
useridet
rep. Note que ton message d'erreur laisse penser que tu n'as pas réévaluer le code déclarant la classe
Student. Bref, il faudrait par exemple appeler :
st = Student("My Name", 123, 456)
... qui au niveau de
Student.__init__permet de recevoir respectivement:
-
"My Name"
pourname
; -
123
pouruserid
; -
456
pourrep
;
Les autres appels de méthodes sont de la forme
student.methode(parametre1, parametre2, ...)où
studentest une instance de la classe
Student.
On notera en particulier que l'appel
karl = Student.describ_std()n'est pas cohérent. Ce devrait probablement être une fonction extérieure à la classe
Studentou à la rigueur une méthode de classe ou une méthode statique. En effet, à ce stade, elle ne dépend pas de
self, et en terme de code, elle initialise des variables locales qui ne sont pas retournées. C'est donc comme si elle ne faisait rien.
D'autres choses ne vont pas. Ta méthode
typingimplique des variables locales qui ne sont pas définies (ni paramètres, ni déclarées). Ce que tu veux récupérer, c'est probablement les attributs de l'instance courante
selfdonc
self.name,
self.userid, etc.
Après correction ton code pourrait ressembler à ceci :
class Student: def __init__(self, name, userid, rep): self.name = name self.userid = userid self.rep = rep def typing(self): print(self.name, self.userid, self.rep) def describ_std(): name = input("Enter name: ") userid = int(input("Enter user id: ")) rep = int(input("Enter rep: ")) return Student(name, userid, rep) def main(): karl = describ_std() karl.typing() main()