Salut à tous,

Un petit exercice de calcul demande la saisie répétitive de plusieurs valeurs numériques entières.
Pour contrôler et effectuer ces saisies, j'ai mis en place une fonction qui permet aussi de sortir éventuellement de l'application à ce moment là.
A la fin de l'exercice, la fonction 'message', propose de recommencer un autre calcul.
L'invite de la fonction 'message' est personnalisable car la fonction est utilisée aussi par l'input de la fonction saisie.
Les 2 fonctions sont regroupées dans un module indépendant, l'ensemble est OK.

J'ai essayé de convertir ces 2 fonctions en classe.
La fonction 'saisie' est devenue la 'class SaisieInt():' elle utilise la fonction 'message' c'est toujours OK.

Je ne réussis pas à convertir cette fonction 'message' en classe qui puisse être utilisée à la fois par la classe SaisieInt() et par l'invite de fin.

Je cherche un conseil, un coup de main, un exemple.
Merci d'avance.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
# le code avec les fonctions
# Bout de code destiné à être utilisé en module indépendant
#-------------------------------------------------------------------------------------------
import sys
 
def message(txtMessage):
    """ message interrogatif ( O / N ) personnalisable """
 
    rep = input(txtMessage + "\n\n    ( O / N )  ? ")
    return True if rep != chr(79) and rep != chr(111) else False
 
def saisie(invite):
    """ Controle de saisie de valeurs 'int' avec possibilité de quitter l'application
        à chaque saisie par la touche < q > ou < Q >  """
 
    while True:
        rep = (input(invite))  # invite personnalisée
        if rep == 'q':
            if not message("Voulez-vous quitter  ?  "):
                exit("Quitter")
        try:
            rep = int(rep)
            return rep
        except(ValueError, TypeError):
            print("erreur de saisie ",file = sys.stderr)
            pass
 
if __name__ == '__main__':
 
    while 1:
        for var in 'abcd':
            laVar = saisie("Quelle valeur pour " + var + " ?")
            print(laVar)
 
        if not message("    <  O  > pour Quitter\n\
    autre pour recommencer"): exit("Fin") # != 'O' ou != 'o' pour relancer

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
# le code avec classe
# Bout de code destiné à être utilisé en module indépendant
#-------------------------------------------------------------------------------------------
import sys
 
class SaisieInt():
    """ Controle de saisie de valeurs 'int' avec possibilité de quitter l'application
        à chaque saisie par la touche < q > ou < Q >  """
 
    def __init__(self, intVar):
        self.v = intVar
 
    def controle(self):
        while True:
            rep = (input(self.v + " : "))     # invite personnalisée
            if rep in 'qQ':
                if not message("Voulez-vous quitter  ?  "):
                   exit("Quitter")
            try:
                rep = int(rep)
                return rep
            except(ValueError, TypeError):
                print("erreur de saisie ",file = sys.stderr)
                pass
 
def message(txtMessage):
    """ message interrogatif ( O / N ) personnalisable """
 
    rep = input(txtMessage + "\n\n    ( O / N )  ? ")
    return True if rep != chr(79) and rep != chr(111) else False
 
if __name__ == '__main__':
 
    while 1:
        for var in 'abcd':
            laVar = SaisieInt("Quelle valeur pour " + var + " ?")
            print(laVar.controle())
 
        if not message("    <  O  > pour Quitter\n\
    autre pour recommencer"): exit("Fin") # != 'O' ou != 'o' pour relancer