J'ai vu beaucoup d'exemples de personnes qui extraient toutes les classes d'un module, généralement quelque chose comme :
# foo.py
class Foo:
pass
# test.py
import inspect
import foo
for name, obj in inspect.getmembers(foo):
if inspect.isclass(obj):
print obj
Génial.
Mais je n'arrive pas à trouver comment récupérer toutes les classes de la base de données. actuel module.
# foo.py
import inspect
class Foo:
pass
def print_classes():
for name, obj in inspect.getmembers(???): # what do I do here?
if inspect.isclass(obj):
print obj
# test.py
import foo
foo.print_classes()
C'est probablement quelque chose de très évident, mais je n'ai rien trouvé. Quelqu'un peut-il m'aider ?
2 votes
Il y avait un PEP pour une fonctionnalité comme celle-ci, mais elle a été rejetée.
0 votes
Qu'y a-t-il de mal à lire la source pour
"class"
? Pourquoi cela ne fonctionne-t-il pas ?81 votes
Je suppose que la question porte sur la volonté d'automatiser une tâche, et qu'il est donc important qu'elle soit effectuée de manière programmatique. On peut supposer que l'auteur de la question pense que le faire manuellement, en lisant le code source avec les yeux, pourrait être répétitif, source d'erreurs ou long.
1 votes
Voici un exemple simple que j'ai créé pour inspecter une classe à partir de cette question :
[name for name,obj in inspect.getmembers(foo) if inspect.isclass(obj)]