je souhaite avoir une classe qui retourne un input, puis me servir plusieurs fois de ce résultat, dans d'autres fonctions. Le but étant de ne demander l’input qu’une fois, puis de récupérer son return pour plusieurs fonctions.
(Quelqu’un ici m’avait montré comment le faire sans classe, mais avec des constantes, et ça marchait très bien, mais j’aurais besoin de le faire avec une classe.)
Mon test marche ici, mais le problème c’est que ça lance automatiquement mon input, sans même lancer le ‘bonjour’ d’abord(dans mon vrai code, ça pose donc un gros pb).
Le problème est que tu appelles input dans la valeur de défaut. Ça pourrait être autre chose comme "" Où bien tu le donnes explicitement au premier appel, ou bien tu donnes une autre valeur pour les autres appels. __init__ doit retourner None, pas une chaîne. Tu dois écrire une autre fonction/méthode dans ta classe pour récupérer la valeur.
exemple qui marche:
class Test: def __init__(self, val=""): self.val = val def recup(self): return self.val test=Test(input(">")) print(test.recup())
print(test.val) # c'est moins POO
J'auerais pu mettre le input() comme valeur de défaut et ne pas le mettre dans l'instanciation.
- Edité par PierrotLeFou 6 janvier 2022 à 8:06:44
Le Tout est souvent plus grand que la somme de ses parties.
le fait de faire ClassTest() fait un appel à son __init__, donc à input
avec une variable comme le propose PierrotLeFou, tu ne l'a qu'une fois, tu passes ensuite ta variable en paramètres aux fonctions qui ont besoin de la valeur (mais en fait, pas besoin de créer une classe pour ça à mon avis) ou que ta variable qui reçoit l'input soit une variable globale (en général, on préfère éviter)
Ca va marcher, mais dès que je vais devoir récupérer le retour de ça dans une autre fonction, je vais devoir retaper l’input.
Chaque ClassTest() va créer une instance différente de ClassTest qui n'aura en commun avec la précédente que ce qui sera passé en argument à l'__init__
Si on ne veut pas refaire une saisie... il faudra la faire une fois et la passer autant de fois que d'instances créées. Et si on ne veut qu'une instance... à vous de voir et de faire fonctionner ce que vous voulez
Ah oui, pardon, j'avais mal compris. Oui, il suffit de s'en servir dans la variable une fois, et la mettre en paramètre des fonctions qui en ont besoin, merci c'est super.
En revanche, je dois m'en servir sur plusieurs modules, et chaque module n'est composé que de classes, donc pas de variable en dehors de mes classes.
Donc j'essaie de mettre cette variable dans une fonction ou dans une classe, mais je dois mal m'y prendre. Ou sinon, autre méthode, est-ce correct si je crée module à part, juste pour cette variable, et de l'importer ensuite dans mes autres modules ?
Donc j'essaie de mettre cette variable dans une fonction ou dans une classe, mais je dois mal m'y prendre. Ou sinon, autre méthode, est-ce correct si je crée module à part, juste pour cette variable, et de l'importer ensuite dans mes autres modules ?
On fait un peu ce qu'on veut... reste à savoir si ça va résoudre le problème (qui n'a pas été exprimé) et qu'on sache mettre en œuvre la solution.
note: classes et modules, c'est juste des outils pour ranger le code. ça n'apporte pas de fonctionnalité à l'application (d'où l'important de savoir ce qu'on veut) qui pourra être réalisée avec ou sans (un code qui marche sans classe, c'est mieux qu'un code qu'on ne maîtrise plus parce qu'on a voulu y mettre des classes et qu'on s'en sort plus).
Oui, je vois bien qu'on peut facilement s'y perdre(c'est mon premier projet en poo).
OK, je vais rester sur mon idée de module à part pour cette variable, pour faire au plus simple, pour l'instant.
Merci pour l'aide, heureusement que vous êtes la.
- Edité par DamienZeh 6 janvier 2022 à 14:13:44
classe et retour d'input
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.