ich eine einfache Klasse mit einem Attribut haben, die eine Liste von Objekten der gleichen KlassePython Rekursion durch Objekte und untergeordneten Objekten, Drucken Kind Tiefe Zahlen
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
Arbeiten mit unserem ‚Beispiel‘ Box-Objekt enthalten kann, ich mag durch die Tiefen alle mögliche Box Kinder manövrieren kann es haben, und die Objekte wie so formatierten ausdrucken:
1 Example Box
1.1 Big Box
1.1.1 Normal Box
1.1.2 Friendly Box
1.2 Cool Box
Das Tabbing zwischen nicht benötigt wird, nur will das Baumformat deutlich zeigen. Ich bin in der Lage, die Objekte selbst zu durchlaufen und ihre Titel auszudrucken, aber ich kann die vorderen Zahlen, die die Eltern/Kind-Beziehung zeigen, nicht ausdrucken. (1, 1.1, 1.2 ...)
Vielen Dank im Voraus für Ihre Hilfe :)
bearbeiten Hier ist, was ich mit so weit
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
Ich mag Ihren ersten Trick mit der Umwandlung der Box lokal zu einer Liste. Auch die Wrapped-Funktion liest viel besser als zwei getrennte Funktionen. Will meinen Code entsprechend bearbeiten und melde mich wieder –
Gut erklärt und funktionierte perfekt. Dein Code hat mich gut erzogen, ich wäre lieber erzogen als eine Codierungsantwort auf mich geworfen zu haben. Vielen Dank –
@HackingLife: Normalerweise würde ich nur Ihr Code Beispiel kommentieren. Am Anfang möchte jeder sehen, was du versucht hast und wo du feststeckst. Nachdem ich gesehen habe, was du geschrieben hast, habe ich einfach entschieden, dass du schon das richtige Konzept hast. Schön, dass es für dich funktioniert! – jdi