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 :

Appeller une fonction ou une classe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut Appeller une fonction ou une classe
    Bonjour,

    Je cherche à appeller des fonction ou des classes en composant leur nom dynamiquement. Exemple :

    J'aimerais remplacer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    instance0= classe0()
    instance1= Classe1()
    instance2= Classe2()
    par un code du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for x in range(3):
       "instance" + x = "Classe" + x ()
    Bon évidemment, ce bout de code est du grand n'importe quoi mais j'espère que cela vous permettra de comprendre ma question.

    Merci pour vos réponses.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Tu peux utiliser eval pour faire ce genre d'opérations :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class C0:
    	def run(self):
    		print "C1"
     
    class C1:
    	def run(self):
    		print "C2"
     
     
    for i in range(2):
    	c = eval("C"+str(i))
    	t = c()
    	t.run()

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut


    Je sais pas ce qui me rend le plus heureux : que tu m'ai donné la réponse ou que tu ai compris ma question !

    A+

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Je crois que eval est à eviter (comme dirait mon petit neveu 'c'est caca' )

    Mieux vaudrait utiliser globals(), c'est plus pythonique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class C0(object):
        def __repr__(self):
             return self.__class__.__name__
     
    class C1(object):
        def __repr__(self):
             return self.__class__.__name__
     
    for i in range(2):
        globals()['instance%i' %i] = globals()['C%i' % i]
     
    print instance0()
    print instance1()
    suivre ce lien pour les explications de globals

    Mais il y a surement possibilité de faire autrement, en passant par des listes par exemple, non?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Ok ca sera parfait.

    Tu remercieras ton p'tit neveu pour t'avoir donné l'inspiration.

    (et pour les listes, dans mon cas de figure, cela ne pouvait pas coller...)

    A +

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Je connaissais pas globals

    Merci pour l'info

+ Répondre à la discussion
Cette discussion est résolue.

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. Appel d'une fonction dans une fonction (sql server 2005)
    Par catchouse dans le forum Développement
    Réponses: 10
    Dernier message: 06/05/2009, 12h03
  3. getattr() ? Appel d'une fonction depuis une fonction
    Par frites.saucisse dans le forum Général Python
    Réponses: 8
    Dernier message: 10/10/2008, 14h21
  4. Appeler une fonction dans une fonction
    Par bryanstaubin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2007, 09h39
  5. Réponses: 3
    Dernier message: 29/04/2006, 13h02

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