Impression d'une structure de données Arborescence en Python
J'ai été à la recherche pour une mise en œuvre possible de l'arbre d'impression qui imprime l'arborescence de façon conviviale, et non pas comme une instance de l'objet.
Je suis tombé sur cette solution sur le net:
source: http://cbio.ufs.ac.za/live_docs/nbn_tut/trees.html
class node(object):
def __init__(self, value, children = []):
self.value = value
self.children = children
def __repr__(self, level=0):
ret = "\t"*level+repr(self.value)+"\n"
for child in self.children:
ret += child.__repr__(level+1)
return ret
Ce code imprime l'arborescence de la manière suivante:
'grandmother'
'daughter'
'granddaughter'
'grandson'
'son'
'granddaughter'
'grandson'
Est-il possible d'avoir le même résultat, mais sans changer la __repr__
méthode, parce que je suis de l'utiliser pour un autre usage.
EDIT:
Solution sans modifier __repr__
et __str__
def other_name(self, level=0):
print '\t' * level + repr(self.value)
for child in self.children:
child.other_name(level+1)
source d'informationauteur Kristof Pal
Vous devez vous connecter pour publier un commentaire.
Oui, déplacez le
__repr__
code de__str__
puis d'appelerstr()
sur votre arbre, ou la passer leprint
déclaration. N'oubliez pas d'utiliser__str__
dans les appels récursifs:Démo:
Pourquoi ne pas le stocker en tant que treelib objet et l'imprimer similaire à la façon dont nous imprimer le CHAID arbre ici avec plus pertinentes nœud descriptions liées à votre cas d'utilisation?