Fragen Sie sich einfach, wie der nächste Knoten in der __str__
-Methode korrekt angezeigt wird. Siehe den folgenden Code und die Ergebnisse. Es sieht so aus, als ob es eine eingebaute rekursive Natur gibt, die die __str__
Methoden für jeden Knoten in der Liste verkettet. Könnte jemand erklären, warum und wie ich es normal verhalten kann, wie nur die Adresse des nächsten Knotens drucken. Vielen Dank.Warum druckt die Methode __str__ die Knoten rekursiv in einer verketteten Liste?
class Node(object):
def __init__(self, x):
self.val = x
self.next = None
def __str__(self):
return "Node {}, next is {}".format(self.val, self.next)
a = Node(1)
b = Node(2)
c = Node(3)
a.next = b
b.next = c
print(a)
Node 1, next is Node 2, next is Node 3, next is None
Warum sollte 'print (a)' und 'Format (self.next)' tun zwei verschiedene Dinge? –
Wenn Sie "self.next" an "format" übergeben, sagen Sie ihm, dass er eine String-Repräsentation von 'self.next' in die Ergebniszeichenfolge einfügen soll. Hey, schau mal, 'self.next' hat eine' __str__' Methode um eine String Repräsentation davon zu erhalten! – user2357112