IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxPython Discussion :

Comment utiliser une fonction dans une classe.


Sujet :

wxPython

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Points : 93
    Points
    93
    Par défaut Comment utiliser une fonction dans une classe.
    Bonsoir,

    Alors voilà j'ai un souci. J'ai une classe que l'on va appeler "onglet". Dans cette classe j'appelle une fonction "chiffre". Avec cette fonction je rappelle une autre fonction "calcul" et j'aimerai à partir de cette fonction, afficher le résultat dans un panel de la classe "onglet". Mais je vois pas comment retransmettre les informations.

    Je ne sais pas si je suis claire. Enfin merci de me comprendre

  2. #2
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut class/méthode/fonction
    Si ta fonction modifie quelquechose de ta classe ''onglet'',
    Alors elle doit être une méthode de ta classe ''onglet'' et pas une fonction externe

    Alors tu crée un attribut d'objet : self.resultat qui sera dispo dans toute ta classe.

    Par contre ce qui est calcul pur peux être passé dans une fonction externe

    Cordialement

    Alex

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Points : 93
    Points
    93
    Par défaut
    Bonsoir,

    j'ai bien pris note de ta réponse. Voici ce que moi j'avais mis en gros ( bon j'ai coupé pas mal de choses pour simplifier):

    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
     
    def calcul(self, x):
             # traitement des données reçues
     
     
    def chiffre(self, x, y, CB):
            # Ici on a le traitement pour les deux appels
            calcul(self, x)
     
     
    class onglets(wx.Panel):
            def __init__(self, parent):
                    wx.Panel.__init__(self, parent, -1)
                    self.onglet = wx.aui.AuiNotebook(self)
     
                   """ Panel pour la r\xe9sistance à 3 anneaux """
                    page1 = wx.Panel(self.onglet, -1, style = wx.SUNKEN_BORDER)
                    self.onglet.AddPage(page1, "onglet")
     
                    chiffre(page1, 106,28,1) # Chiffre 1
                    chiffre(page1, 88,163,2) #Chiffre 2
     
                    # Une fois le calcul finit, on affiche dans le panel page1 mais
                    # je bloque.
    Comme tu peux le voir, j'appelle deux fois la fonction chiffre. Une fois le calcul terminé, je veux que ça s'affiche dans "page1".

    Ce qu'il faut faire donc, c'est mettre chiffre dans la classe "onglet" ?

    Merci de ton aide

  4. #4
    Membre averti Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Points : 344
    Points
    344
    Par défaut
    En effet, enfin je ne fait que citer G.Swinnen :
    "L'idée de base de la
    programmation orientée objet consiste en effet à regrouper dans un même ensemble
    (l'objet) à la fois un certain nombre de données (ce sont les attributs d'instance) et les
    algorithmes destinés à effectuer divers traitements sur ces données (ce sont les
    méthodes, c'est-à-dire des fonctions encapsulées).
    Objet = [ attributs + méthodes ]"

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    - mon premier conseil, ce serait de mettre faire un return a la fin de calcul et de chiffre, qui retourne les resultats de ces fonctions. Puis, dans le __init__, ajouter les resultats dans le panel
    - mon deuxieme est de ne pas nommer le premier parametre d'une fonction "self" : il faut (pour des raisons de visibilites) garder self pour les methodes d'une classe
    - donc soit tu as besoin de page1 dans calcul et chiffre (pour d'autres raisons que l'affichage) et il faut transformer ces deux fonctions en methodes, soit il n'y en a pas besoin et il vaut mieux supprimer ce parametre

    Enfin, page1 est un panel, il faut donc ajouter un sizer et des composants pour ajouter le resultat. Peut etre que c'est la ton probleme?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 133
    Points : 93
    Points
    93
    Par défaut
    Bonjour,

    Merci de vos réponse. Disons qu'en fait, j'ai plusieurs combobox dans le panel "page1". Ces combobox servent à choisir une valeur grâce à la fonction "chiffre". Une fois toutes ces valeurs choisies, l'utilisateur clique sur un bouton "calculer" et l'action se déroulerait dans la fonction "calcul".Cette fonction devrait calculer un algorithme grâce aux valeurs choisies des combobox et retourner les étapes et le résultat dans "page1".

    Je suis un peu perdu là dessus en ce moment. J'ai du mal apprendre à coder proprement et ça pose problème finalement . Mais bon ça se rattrape ! . En tout cas je vous remercie bien de votre aide !

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Comment utiliser une fonction dans une fonction
    Par hatenaku dans le forum Langage
    Réponses: 3
    Dernier message: 19/04/2008, 20h00
  4. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  5. Response.Redirect dans une fonction dans une classe
    Par jpower dans le forum ASP.NET
    Réponses: 14
    Dernier message: 24/08/2007, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo