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 :

comparaison sur le nom d'une classe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut comparaison sur le nom d'une classe
    Bonjour,
    J'ai défini une classe générique appelée par deux autres instances de classes. Je voudrais savoir qui appelle cette classe générique afin de différencier certains traitements. Je ne sais pas comment tester l'instance appellante, ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class GenericPanel__:
       def __init__(self)
          print "classe appelante : ",self.__class__,"   type=",type(self.__class__)
    J'obtiens les traces suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1er appel :
    classe appelante : <HMI.panel.Panel__   <type 'classobj'>
    2eme appel:
    classe appelante : <HMI.detailbox.DetailBox__   <type 'classobj'>
    Je recherche le test qui me permettrait de différencier les deux appels (si je mets la string "HMI_panel.Panel__" cela ne marche pas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class GenericPanel__:
       def __init__(self)
          if self.__class__ == ???:
             print "l'appelant est  HMI.panel.Panel__"
          else:
             print "l'appelant est  HMI.detailbox.DetailBox__"
    Merci

  2. #2
    Membre éprouvé Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Par défaut
    J'ai trouvé cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if isinstance(self,Panel__) == True:
       print "l'appelant est  HMI.panel.Panel__"
    Il faut veiller à faire l'import du module contenant la classe Panel__ afin que cette référence soit connu lors du test.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Pourquoi ne pas utiliser les propriétés de la dérivation "simple"?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class G:
        def __init__(self):
            # le boulot commun a tous les sous-classes et donc "générique"
    class M(G):
        def __init__(self):
             super(M, self).__init__()
            # actions spécifiques à M
    class P(G):
        def __init__(self):
             super(P, self).__init__()
            # actions spécifiques à P
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/06/2006, 14h23
  2. delphi 7 : tuto sur la creation d'une classe ?
    Par Lorenzo77 dans le forum Delphi
    Réponses: 4
    Dernier message: 18/05/2006, 01h33
  3. [Débutant] Créer une instance avec le nom d'une classe
    Par Quetzalcoatl dans le forum Langage
    Réponses: 7
    Dernier message: 23/01/2006, 20h43
  4. [XSL] Test sur le nom d'une balise
    Par KibitO dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/12/2005, 13h44
  5. Conseil du compilo sur un destructeur d'une classe
    Par okparanoid dans le forum Langage
    Réponses: 2
    Dernier message: 20/07/2005, 20h11

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