Я искал возможную реализацию дерева печати, которая печатает дерево в удобном для пользователя образом, а не как экземпляр объекта.
Я нашел это решение в сети:
источник: 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
Этот код печатает дерево следующим образом:
'grandmother'
'daughter'
'granddaughter'
'grandson'
'son'
'granddaughter'
'grandson'
Возможно ли иметь тот же результат, но без изменения метода __repr__
, потому что я использую его для других целей.
EDIT:
Решение без изменения __repr__
и __str__
def other_name(self, level=0):
print '\t' * level + repr(self.value)
for child in self.children:
child.other_name(level+1)