St = Student() TypeError: __init__() missing 2 required pos
Résolu/Fermé
alexander
-
Modifié le 28 févr. 2022 à 18:33
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 28 févr. 2022 à 18:32
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 28 févr. 2022 à 18:32
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
- St unlocker forum - Forum Windows
- St gege - Forum Études / Formation High-Tech
- Uncaught typeerror: cannot access offset of type string on string - Forum PHP
1 réponse
mamiemando
Messages postés
33093
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
4 mai 2024
7 752
28 févr. 2022 à 18:32
28 févr. 2022 à 18:32
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()