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 :

liste des classes et des methodes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Par défaut liste des classes et des methodes
    Je voudrais savoir comment lister toutes les classes d'un programmes et toutes les methodes et les attributs d'une classe.
    Comment connaitre toutes les bibiotheques disponibles en python et savoir ce qu'elles proposent ?

    Merci

    T.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    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 062
    Par défaut
    C'est lié à un problème spécifique ou c'est juste par curiosité, car dans un cas concret il est très rare d'en avoir l'utilité... Ça s'appelle de l'introspection ! Si ce n'est que par curiosité, ce mot clé et le mot clé python via google doit donner des choses intéressantes.

  3. #3
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    Je voudrais savoir comment lister toutes les classes d'un programmes et toutes les methodes et les attributs d'une classe.
    Comment connaitre toutes les bibiotheques disponibles en python et savoir ce qu'elles proposent ?
    Bonjour,
    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
    >>> class A:
    	tmp = "0"
    	def fct():
    		print("fct")
    	def fct1():
    		print("fct1")
     
     
    >>> print([x for x in dir(A) if not x.startswith("__")])
    ['fct', 'fct1', 'tmp']
    >>> class B:
    	ma_var = "B"
     
     
    >>> print([x for x in dir() if not x.startswith("__")])
    ['A', 'B']
    >>>
    Mais, ainsi que le précise fred1599, l'intérêt ne réside que dans la curiosité (ou dans de très rares cas).

    Clodion

    PS: quant aux bibliothèques, il a LE site a consommer sans modération aucune.

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je trouve au contraire que le code répondant à ce genre de question fait partie des outils indispensables de mise au point des programmes, et je regrette qu'il n'y ait pas plus d'outils d'analyse "tout faits" sur ce sujet.

    En ce qui me concerne, j'ai longtemps utilisé "pydoc" qui fait partie du système Python.

    Voilà un petit exemple de code qu'on peut analyser et qu'on appellera pas la suite "moduledivers":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A:
        tmp = "0"
        def fct():
            print("fct")
        def fct1():
            print("fct1")
     
    class B:
        def toto(self, machin=""):
            pass
    Et voilà ce que donne l'utilisation du module pydoc:

    http://documents.jpvweb.com/developp...uledivers.html

    Depuis, j'ai élaboré mon propre logiciel qui apporte des info complémentaires du genre: "objets importés inutilement", ou "importations recommandées". On peut aussi afficher l'arbre de résolution de l'interpréteur ou d'autres infos sur le fonctionnement qui permettent de mieux comprendre comment ça marche.

    Voilà maintenant une petite utilisation du module inspect sur le même code d'exemple:

    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
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python 3
     
    import inspect
     
    import importlib
     
    #############################################################################
    if __name__ == "__main__":
     
        cemodule = "moduledivers"
     
        modul = importlib.import_module(cemodule, package=None)
     
        L = [[nom, data] for nom, data in inspect.getmembers(modul)]
     
        for nom, data in L:
            if nom[:2]!="__" and inspect.isclass(data):
                # on a trouvé une classe qui n'est pas "système"
                print("*"*78)
                print("Classe trouvée:", nom)
                membres = inspect.getmembers(data)
                for nom2, data2 in membres:
                    if inspect.ismethod(data2) or inspect.isfunction(data2):
                        # on a trouvé des méthodes ou fonctions dans cette classe
                        print(nom2)
                print()
    Et voilà son résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ******************************************************************************
    Classe trouvée: A
    fct
    fct1
     
    ******************************************************************************
    Classe trouvée: B
    toto
    On voit bien que tout ce qu'on a voulu trouver l'a été!

    Le module inspect a beaucoup de possibilités: on peut éplucher complètement un code dans tous ses éléments pour le déverminage du code et l'amélioration de sa qualité.

    Je n'ai pas dit que c'était facile, j'ai dit que c'était indispensable...

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. Utiliser des packages ou des classes présents sur le net
    Par lionrouge dans le forum Général Java
    Réponses: 2
    Dernier message: 27/09/2006, 06h09
  3. difference des classes et des ids en css?
    Par darkbob dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 25/07/2006, 15h08
  4. Réponses: 11
    Dernier message: 09/12/2005, 14h59
  5. Réponses: 9
    Dernier message: 25/09/2005, 16h33

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