@d_rose: Na das ist doch schon fast alles für Aufgabenteil a). Du hast die Klasse geschrieben und die Beispielliste als Exemplar(e) dieser Klasse dargestellt.
Wobei Du im Beitragstext nicht ganz korrekt bist. Du erstellst nichts mit (5,"ab",(0.36,None))) als Argument. Das wäre in Python ja ein verschachteltes Tupel. Wobei man die verkettete Liste natürlich auch genau so repräsentieren könnte und dann Funktionen schreiben könnte die beispielsweise etwas an so eine Listendarstellung anhängen. Eine Vergleichsfunktion bräuchte man nicht schreiben, denn da würde der ``==``-Operator auf Tupeln schon das richtige machen.
Der `eintrag` von `instanz_1` wäre tatsächlich 5, der Nachfolger aber nicht ("ab",(0.36,None)) sondern das Exemplar das durch den zweiten `Vliste()`-Aufruf in dem Ausdruck erstellt wurde. Das hat den als `eintrag` 'ab' und als Nachfolger das Exemplar das durch den dritten `Vliste()`-Aufruf erstellt wurde. Beziehungsweise von der Ausführungsreihenfolge her natürlich der erste Aufruf, denn die Argumente werden in Python ja vor dem Aufruf ausgewertet.
Vielleicht kannst Du den Knoten im Kopf ja lösen, oder zumindest lockern, wenn Du das nicht als einen Ausdruck hin schreibst, sondern die einzelnen Zwischenergebnisse an Namen bindest. Und auf dem ersten Bild ist ja eine Zeichnung der Struktur, schreib da mal `eintrag` und `nachfolger` an die richtigen Stellen.
Und Du könntest das mal in einer interaktiven Python-Shell ausprobieren und schauen wie Du auf die Attribute zugreifen kannst und was da jeweils als Ergebnis heraus kommt. Hilfreich könnte auch eine `__repr__()`-Implementierung sein, die etwas mehr über die Objekte ausgibt.
Edit: Meine Implementierung so weit, mit dem externen `attr`-Modul um schon eine `__repr__()`-Darstellung und einen Vergleich zwischen `LinkedList`-Objekten zu bekommen:
Code: Alles auswählen
#!/usr/bin/env python3
from attr import attrib, attrs
@attrs
class LinkedList:
value = attrib()
next = attrib(default=None)
def main():
list_a = LinkedList(5, LinkedList('ab', LinkedList(0.36)))
print(list_a)
if __name__ == '__main__':
main()
Ausgabe:
Code: Alles auswählen
LinkedList(value=5, next=LinkedList(value='ab', next=LinkedList(value=0.36, next=None)))