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

Python Discussion :

Appel de méthode interne dynamqiue


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Appel de méthode interne dynamqiue
    Bonjour,

    J'essaie de créer un prg de menu dynamique, ou la méthode est une chaine de caractère

    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
    42
    43
    44
    45
    46
     
    class Menu:
     
        _fileEnv = None
        _selection = None
        _MenuSelect = {
            0: "AddSshKeys",
            1: "AddConfigEnv",
            2: "UpdateYum",
            3: "displayEnv",
            4: "end"
            }
     
        def __init__(self, file):
            self._fileEnv = file
     
        def display(self, options):
            print options
            print(u"Programme client cloud @CLOE Copyright #MENJ ")
            self._selection = 1
            while self._selection:
                print("""
                1.Ajouter des clefs ssh
                2.Configurer les variables d'environnements
                3.Choisir les paquets à installer
                4.Forcer la mise à jour
                5.Quitter/Sortir
                """)
                self._selection = int(input("Select a color option: "))
                if (self._selection > 0) and (self._selection < 5):
                     print self._MenuSelect[self._selection]
                     result = self._MenuSelect[self._selection] <-- comment faire l'appel de méthode ensuite
                     self.result() <- ne fonctionne pas
     
        def AddSshKeys():
            print("\nAjout de clefs ssh")
        def AddConfigEnv():
            print("\nConfiguration des environnements")
        def printListPackage():
            print("\nListe des paquets")
        def UpdateYum():
            print("\nMise à jour")
        def end():
            print("\nSortie ...")
        def displayEnv():
            print(u"Impression des variables d'environnements :")
    Je suis je l'avoue plus à l'aise sur d'autres langages

    Olivier

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 061
    Par défaut
    Bonsoir,

    Un code exemple, il faut que tu utilises getattr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> class A:...     def method_A(self):
    ...         print('a')
    ...     def method_B(self):
    ...         getattr(self, 'method_A')()
    ... 
    >>> a = A()
    >>> a.method_A() # normal
    a
    >>> a.method_B() # test
    a

  3. #3
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    de ce que j'ai compris de la question, perso je ferais un truc de ce genre là :
    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
    class Menu:
       def __init__(self):
          self._MenuSelect = [
             ( 'AddSshKeys',   self.func0, 'Ajouter des clefs ssh' ),
             ( 'AddConfigEnv', self.func1, "Configurer les variables d'environnements" ),
             ( 'UpdateYum',    self.func2, 'Choisir les paquets à installer' ),
             ( 'displayEnv',   self.func3, 'Forcer la mise à jour' ),
             ( 'end',          self.func4, 'Quitter/Sortir' )
          ]
     
       def run(self):
          for i,j in enumerate(self._MenuSelect):
             print('{}: {}'.format(i, self._MenuSelect[i][2]))
     
          while True:
             try:
                num = int(input('votre choix : '))
                if not(0 <= num < len(self._MenuSelect)): raise
                break
             except: pass
     
          print('exécution de la fonction "{}" : '.format(self._MenuSelect[num][0]), end='')
          self._MenuSelect[num][1]() # note les parenthèses
     
       def func0(self): print('je suis func0')
       def func1(self): print('je suis func1')
       def func2(self): print('je suis func2')
       def func3(self): print('je suis func3')
       def func4(self): print('je suis func4')
     
    if __name__ == '__main__':
       menu = Menu()
       menu.run()
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0: Ajouter des clefs ssh
    1: Configurer les variables d'environnements
    2: Choisir les paquets à installer
    3: Forcer la mise à jour
    4: Quitter/Sortir
    votre choix : 5
    votre choix : -1
    votre choix : gddfgh
    votre choix : 3
    exécution de la fonction "displayEnv" : je suis func3

  4. #4
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut getAttr pointeur
    Bonjour,

    Merci pour vos réponses.

    J'ai utilisé la première méthode et cela fonctionne.

    Olivier

Discussions similaires

  1. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  2. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55
  3. appel entre méthodes de meme classe
    Par frmaniako dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2004, 22h55
  4. [Débutant] [JSP] Appel de méthode
    Par Crazyblinkgirl dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 10/09/2004, 11h10
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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