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.
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.
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.
Bonjour,
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).
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'] >>>
Clodion
PS: quant aux bibliothèques, il a LE site a consommer sans modération aucune.
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":
Et voilà ce que donne l'utilisation du module pydoc:
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
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:
Et voilà son résultat:
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()
On voit bien que tout ce qu'on a voulu trouver l'a été!
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
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...![]()
Partager