у меня есть простой класс с атрибутом, который может содержать список объектов одного и того же классаPython Рекурсия через объекты и дочерние объекты, номера глубины печати ребенка
class BoxItem:
def __init__(self, name, **kw):
self.name = name
self.boxItems = []
... #more attributes here
box1 = BoxItem('Normal Box')
box2 = BoxItem('Friendly Box')
box3 = BoxItem('Cool Box')
box4 = BoxItem('Big Box', [box1, box2]) #contains some children
example = BoxItem('Example Box', [box4,box3]) #contains another level of children
Работа с нашим «например» объект коробки, Я хотел бы, чтобы маневрировать через глубину всех возможных детей коробки он может иметь и распечатать объекты, отформатированные как так:
1 Example Box
1.1 Big Box
1.1.1 Normal Box
1.1.2 Friendly Box
1.2 Cool Box
между использованием закладками не требуется, просто желая показать формат дерева ясно. Я могу спуститься по объектам и распечатать их названия, но я не могу распечатать передние номера, отображающие отношения родитель/ребенок. (1, 1,1, 1,2 ...)
Заранее спасибо за помощь :)
Edit Вот что я работаю с до сих пор
def print_boxes(box_list):
node_count = 0
for box in box_list:
node_count += 1
print str(node_count)+' '+box.name #prints out the root box
recursive_search(box,node_count)
def recursive_search(box,node_count): #recursive automatically
level = 0
for child in box.boxItems:
level += 1
for x in range(len(child.boxItems)):
print x+1 #this prints out some proper numbers
print "level: "+str(level) #experiment with level
print child.name #prints out child box name
recursive_search(child,node_count) #runs the function again inside the function
Мне нравится ваш первый трюк с преобразованием окна локально в список. Также функция Wrapped читает намного лучше, чем две отдельные функции. Будет отредактировать мой код соответственно и отчитаться –
Хорошо Разъяснено и отлично работает. Ваш код хорошо воспитал меня, я бы предпочел получить образование, чем набросился на меня код. Спасибо –
@HackingLife: Обычно я просто прокомментирую ваш пример кода. Сначала каждый хочет увидеть, что вы пробовали, и где вы застряли. Увидев, что вы написали, я просто решил, что у вас уже есть правильная концепция. Рад, что это работает для вас! – jdi