Comment appeler une fonction de classe depuis une autre fonction de classe
Fermé
Kangoo
-
13 août 2021 à 23:49
yg_be Messages postés 23449 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 janvier 2025 - 15 août 2021 à 15:51
yg_be Messages postés 23449 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 janvier 2025 - 15 août 2021 à 15:51
A voir également:
- Appeler une classe dans une autre classe - python
- Appeler en privé - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Citizen code python avis - Accueil - Outils
- Bluetooth mercedes classe a 2005 - Forum Autoradio
4 réponses
samigtx1459
Messages postés
482
Date d'inscription
vendredi 3 août 2012
Statut
Membre
Dernière intervention
13 janvier 2024
67
Modifié le 14 août 2021 à 11:37
Modifié le 14 août 2021 à 11:37
Bonjour,
D'après ce que je vois lorsque tu appelles ta méthode de classe fct1 (que tu appelles fonction de classe) tu en appelles une autre (fct2) mais sans argument quand tu mets command = self.fct2. Il manque effectivement l'argument name.
D'après ce que je vois lorsque tu appelles ta méthode de classe fct1 (que tu appelles fonction de classe) tu en appelles une autre (fct2) mais sans argument quand tu mets command = self.fct2. Il manque effectivement l'argument name.
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
Ambassadeur
1 564
14 août 2021 à 12:52
14 août 2021 à 12:52
bonjour,
à quoi sert le second paramètre de la fonction fct2?
à quoi sert le second paramètre de la fonction fct2?
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
1 564
>
Kangoo
14 août 2021 à 14:46
14 août 2021 à 14:46
je pense que tu devrais commencer par des exercices plus simples.
stocker ou retourner, il faut choisir.
stocker ou retourner, il faut choisir.
Kangoo
>
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
Modifié le 14 août 2021 à 16:22
Modifié le 14 août 2021 à 16:22
Ce que je souhaite, c'est que la commande du bouton puisse renvoyer vers une méthode de la classe. J'ai pris pour exemple le fait de retourner le nom du bouton mais ça n'est qu'un exemple. On aurait pu donner d'autres directives dans fct2.
Savez-vous comment procéder svp ?
Savez-vous comment procéder svp ?
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
1 564
>
Kangoo
14 août 2021 à 19:26
14 août 2021 à 19:26
change le nom du deuxième paramètre de la fonction. ce n'est pas une bonne idée d'utiliser le même nom pour différents éléments, cela crée des confusions.
Kangoo
>
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
14 août 2021 à 19:55
14 août 2021 à 19:55
Mais c'est justement du même élément dont je parle. Le but de la fonction est d'afficher la valeur de l'attribut name que je définis avec l'instance. Le paramètre que prend cette méthode est en fait un attribut de la classe.
Je viens de trouver une solution mais elle n'est pas très esthétique. Je passe par une troisième méthode qui ne nécessite pas de préciser de paramètre, et dont le but est de lancer fct2. Voici le code.
Peut-être y a-t'il une technique plus "propre" ?
from tkinter import * # Importe Tkinter ######################## class MaClasse(): # Classe def __init__(self,name): # Constructeur self.name = name def fct2(self, name): # Retourne le nom du btn print (self.name) def fct3(self): self.fct2(self.name) def fct1(self, name): # Création du bouton self=Button(root,text=name,command=self.fct3) self.pack() ######################## root=Tk() # Fenêtre btn=MaClasse('Hello') # Instance de MaClasse btn.fct1(btn.name) root.mainloop()
Peut-être y a-t'il une technique plus "propre" ?
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
1 564
14 août 2021 à 20:17
14 août 2021 à 20:17
essaie ceci, dans ce que tu penses être une solution:
surtout, avant d'utiliser les classes, prend un peu de temps pour comprendre les fonctions et leurs paramètres.
def fct2(self, unparametreinutilise): # Retourne le nom du btn print (self.name)
surtout, avant d'utiliser les classes, prend un peu de temps pour comprendre les fonctions et leurs paramètres.
Kangoo
>
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
14 août 2021 à 20:26
14 août 2021 à 20:26
Malheureusement, ça ne marche pas lorsque je rajoute cela. La console me renvoie : "TypeError: fct2() missing 1 required positional argument: 'unparametreinutilise'"
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
1 564
>
Kangoo
14 août 2021 à 20:31
14 août 2021 à 20:31
quand tu modifies ton code, n'hésite pas à partager ce que tu fais, au lieu de partager uniquement le message d'erreur.
Bonsoir,
Nomme ta classe et ses méthodes correctement, des fct* ne correspond aucunement à ce que ces méthodes sont censées faire.
Si ta classe est supposée représenter un bouton tkinter avec des options prédéfinies, alors fais lui hériter de Button.
Là en l'état on ne comprend pas pourquoi dans ta classe tu as besoin de passer en paramètre name qui est déjà connu.
Maintenant lorsqu'on a besoin de passer des paramètres à une fonction à fournir dans un paramètre d'une autre fonction, on utilise une fonction anonyme.
C'est le genre de chose à utiliser avec parcimonie.
Nomme ta classe et ses méthodes correctement, des fct* ne correspond aucunement à ce que ces méthodes sont censées faire.
Si ta classe est supposée représenter un bouton tkinter avec des options prédéfinies, alors fais lui hériter de Button.
Là en l'état on ne comprend pas pourquoi dans ta classe tu as besoin de passer en paramètre name qui est déjà connu.
Maintenant lorsqu'on a besoin de passer des paramètres à une fonction à fournir dans un paramètre d'une autre fonction, on utilise une fonction anonyme.
def execute(func): func() def test(arg): print(arg) execute(lambda: test('test'))
C'est le genre de chose à utiliser avec parcimonie.
Bonjour, j'ai besoin d'aide pour résoudre un exercice êtes-vous dispo ?
yg_be
Messages postés
23449
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 janvier 2025
1 564
15 août 2021 à 15:51
15 août 2021 à 15:51
peux-tu créer une nouvelle discussion?
14 août 2021 à 14:39