J'essaie d'écrire un algorithme récursif pour générer une arborescence de dépendances de la hiérarchie d'héritage d'une classe. Voici mon exemple de code. Le problème que j'obtiens est quand nous les éléments dans la liste de bases sont plus qu'un, seulement le 1er élément de la liste et ses classes parentes sont imprimés. Je voudrais également générer un type de graphique montrant la hiérarchie d'héritage. Aide aimablement!générer une arborescence de dépendances de la hiérarchie d'héritage
1
A
Répondre
4
Le problème est ici:
for item in bases:
print item
return get_bases(item)
Vous RECURSE dans l'élément, puis retourne immédiatement sans continuer à travers la boucle. Vous pouvez remplacer par quelque chose comme:
for item in bases:
print item
get_bases(item)
ou vous pourriez peut-être construire une structure arborescente au lieu d'une impression ultérieure (pprint_node montre une implémentation possible):
class Node(object):
def __init__(self, item, children):
self.item = item
self.children = children
def get_class_tree(klass):
bases = getattr(klass, '__bases__')
return Node(klass, [get_class_tree(item) for item in bases])
def pprint_node(node, level=0):
print (" "*level) + str(node.item)
for child in node.children:
pprint_node(child, level+1)
Questions connexes
- 1. comment créer une arborescence de dépendances en utilisant le point
- 2. Générer dynamiquement une arborescence de fonctions en Python.
- 3. Construction d'une arborescence de hiérarchie multiniveau dynamique et non symétrique
- 4. Création d'une arborescence JSON à partir d'une hiérarchie de chaîne
- 5. Delphi 7: comment générer une hiérarchie de classes?
- 6. Algorithme pour générer une hiérarchie de concepts numériques
- 7. application pour générer diagramme Java hiérarchie de classes
- 8. Afficher une arborescence
- 9. Générer une arborescence d'analyse à partir de la description de l'analyse
- 10. Comment obtenir une arborescence de dépendances avec l'analyseur syntaxique NLP de Stanford
- 11. Quel est le meilleur algorithme Delphi pour afficher une arborescence pour afficher une hiérarchie existante d'objets
- 12. Traverser une arborescence de répertoires
- 13. appeler graphique hiérarchie générer avec ctags
- 14. Comment puis-je générer une arborescence à partir d'une table dans une base de données?
- 15. Comment générer une arborescence à partir de ce jeu de résultats basé sur l'algorithme Tree Traversal?
- 16. Quel est le meilleur modèle pour gérer plusieurs versions de la même arborescence de dépendances dans Guice?
- 17. Comment éviter les branches imbriquées causées par la hiérarchie de dépendances de code source
- 18. Ayant une arborescence riche
- 19. Comment générer Javadoc pour Maven dépendances
- 20. Comment remplir une arborescence?
- 21. Antlr v3: Impression de la sous-arborescence d'un nœud donné dans une arborescence d'analyse
- 22. Arborescence Structure de données C# à JS
- 23. Existe-t-il un moyen d'analyser une arborescence de dépendances à partir d'une sortie de script de génération?
- 24. Comment générer des dépendances dans Nuspec (ou nupkg contient des dépendances dans ses métadonnées) de csproj
- 25. Outil ou IDE pouvant générer des arbres de dépendances?
- 26. Traverser une arborescence de répertoires en C++
- 27. Comment créer une arborescence C# à partir de SQL Hierarchyid?
- 28. Comment actualiser une arborescence de données?
- 29. Arborescence de réflexion C#
- 30. Comprendre la hiérarchie de UIViewController
grâce @Owen, je l'espère « def Node 'supposé être' Node 'après l'exécution de la méthode get_class_tree, comment imprimer la structure arborescente générée par cette méthode? – shaz
Oui, ça devrait être de la classe. Fixé. Également ajouté une méthode d'impression très simple, vous pouvez commencer. –