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 :

Récupérer le nom d'une Sous-classe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Récupérer le nom d'une Sous-classe
    Bonjour,
    dans le code ci-dessous je voudrais que l'exception m'indique le nom de la sous-classe B afin de savoir où la méthode n'a pas été implantée.

    Toute info. est la bienvenue.

    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
    #!/usr/bin/env python
    #coding=utf-8
     
    class class_A():
        def __init__(self, texte):
            self.texte = texte
            self.action()
     
        def action(self):
            raise Exception, "La methode Action n'a pas ete programmee."
     
     
    class class_B(class_A):
        def __init__(self, texte):
            self.texte = texte
            self.action()
     
    a = class_B("test B")

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    C'est très simple

    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 Parent:
    ...     def action(self):
    ...         raise Exception("Not implemented, from %s" % self.__class__.__name__) 
    ... 
     
    >>> class Child(Parent):
    ...     pass
    ... 
    >>> c = Child()
    >>> c.action()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 3, in action
    Exception: ('Not implemented, from Child')

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    J'ai honte, j'ai testé self.__name__ mais pas self.__class__.__name__. Pour la peine je me condamne à 60km de vélo.

    Merci.

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par rambc Voir le message
    Pour la peine je me condamne à 60km de vélo.
    Le sport c'est bien

    Tu serais peut-être intéressé par le module abc, qui permet de faire des réelles méthodes abstraites et de découvrir les erreurs directement à l'instantiation. (si mes souvenirs sont justes). Il est dispo à partir de Python 2.6

  5. #5
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Le sport c'est bien
    Oui mais c'est fatiguant...

    Citation Envoyé par Antoine_935 Voir le message
    Tu serais peut-être intéressé par le module abc, qui permet de faire des réelles méthodes abstraites et de découvrir les erreurs directement à l'instantiation. (si mes souvenirs sont justes). Il est dispo à partir de Python 2.6
    Merci pour l'info. mais le système ci-dessus me convient parfaitement.

    Dernière question. Peut-on récupérer le nom de la méthode Action au sein même de la méthode ?

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Oui, et là aussi ça tient un peu du sport :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> class MyClass:
    ...     def test(self):
    ...         print(sys._getframe().f_code.co_name)
    ... 
    >>> t = MyClass()
    >>> t.test()
    test

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

Discussions similaires

  1. Récupérer le nom d'une sous-fenêtre
    Par ludi42 dans le forum Qt
    Réponses: 3
    Dernier message: 23/01/2015, 11h50
  2. Récupérer le nom d'une classe et d'une méthode
    Par hanubis37 dans le forum Langages
    Réponses: 2
    Dernier message: 21/11/2014, 11h50
  3. récupérer le nom d'une classe javascript
    Par dark poulpo dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 09/08/2012, 12h34
  4. Réponses: 22
    Dernier message: 19/01/2011, 10h00
  5. Réponses: 4
    Dernier message: 23/09/2010, 22h32

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