St = Student() TypeError: __init__() missing 2 required pos
Résolu/Fermé
alexander
-
Modifié le 28 févr. 2022 à 18:33
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 28 févr. 2022 à 18:32
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 - 28 févr. 2022 à 18:32
A voir également:
- St = Student() TypeError: __init__() missing 2 required pos
- Play st - Télécharger - Téléchargement & Transfert
- St sportytrader - Télécharger - Médias et Actualité
- Be student again avis - Forum Réseaux sociaux
- Torrent9.st ✓ - Forum Téléchargement
- Typeerror: can't multiply sequence by non-int of type 'float' - Forum Python
1 réponse
mamiemando
Messages postés
33535
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 février 2025
7 828
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,
self
est (toujours) renseigné, mais pas name
, userid
et 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ù
student
est 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
typing
implique 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 self
donc 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()