Ich bin Lila, 15 Jahre alt und habe das Fach Informatik in der Schule. Ich interessiere mich total für Programmiersprachen und habe jetzt auch schon Java in der Schule gelernt. Ich bin neu und hoffe, dass ihr wir alle gut auskommen werden und ihr mich in eure Gemeinschaft aufnehmt.
Jetzt habe ich beschlossen eine neue Sprache zu lernen und widme mich deswegen nun Python! Ich habe mir als kleines Projekt vorgenommen die Klasse List in Python zu programmieren. Damit habe ich nun angefangen und bin auf einige Probleme gestoßen. So sieht meinProgramm momentan aus:
Code: Alles auswählen
class List:
class List_node:
def __init__(self,content_object):
self.content_object = content_object
self.next = None
def get_content_object(self):
return self.content_object
def set_content_object(self,content_object):
self.content_object = content_object
def get_next_node(self):
return self.next
def set_next_node(self, list_node):
self.next = list_node
def __init__(self):
first = None
last = None
current = None
def is_empty(self):
return self.first is None
def has_access(self):
return self.current is not None
def next(self):
if self.has_access():
self.current = self.current.get_next_node()
def to_first(self):
if self.is_empty() == False:
self.current = self.first
def to_last(self):
if self.is_empty() == False:
self.current = self.last
def get_content(self):
if self.has_access():
return self.current.get_content_object()
else:
return None
def set_content(self,content_object):
if content_object is not None and self.has_access():
self.current.set_content_object(content_object)
def insert(self, content_object):
if content_object is not None:
if self.has_access():
new_node = List_node(content_object)
if self.current != self.first:
previous = self.get_previous(self.current)
new_node.set_next_node(previous.get_next_node())
else:
previous.set_next_node(self.first)
self.first = new_node
else:
if self.is_empty():
new_node = List_node(content_object)
self.first = new_node
self.last = new_node
def append(self, content_object):
if content_object is not None:
if self.is_empty():
self.insert(content_object)
else:
new_node= List_node(content_object)
self.last.set_next_node(new_node)
self.last = new_node
def concat(self, list):
if list != self and list is not None and not list.is_empty():
if self.is_empty():
self.first = list.first
self.last = list.last
else:
self.last.set_next_node(list.first)
self.last = list.last
list.first = None
list.last = None
list.current = None
def remove(self):
if self.has_access() and not self.is_empty():
if self.current == self.first:
self.first == self.first.get_next_node()
else:
previous = self.get_previous(self.current)
if self.current == self.last:
self.last == previous
previous.set_next_node(self.current.get_next_node)
temp = self.current.get_next_node
self.current.set_content_object(None)
self.cuurent.set_next_node(None)
self.current = temp
if self.is_empty():
self.last = None
def get_previous(self, list_node):
if list_node is not None and list_node != self.first and not self.is_empty():
temp = self.first
while temp is not None and temp.get_next_node() != list_node:
temp = temp.get_next_node
return temp
else:
return None
Mich verwirrt, da ich nur Java kenne, erstmal natürlich das self. Jedoch habe ich nun das Gefühl das wenigstens einigermaßen verstanden zu haben. Fehlermeldungen habe ich immer dann, wenn ich bei insert() und append() ein Liste_node -Objekt erzeugen möchte, woran liegt das? Außerdem bin ich mir super unsicher, wie ich das mit dem <ContentType> machen muss, was es sonst in Java bei Listen gibt. Hier habe ich ja nie String, int, etc. angegeben. Auch weiß ich nicht, wie ich es hinbekomme den Konstruktor so zu haben, dass durch das typische [ ] eine Liste entsteht.
Könntet ihr mir vielleicht helfen und mal über das Programm gucken und mich berichten falls euch Fehler auffallen oder mir bei meinen Fragen ein bisschen weiterhelfen? Vielleicht hat ja sogar einer von euch Lust mitzumachen und mich dabei zu unterstützen! Ich bin für jede Hilfe extrem dankbar, da ich ja noch nicht so viel Erfahrung habe.
Ich freue mich auf eure Antworten und natürlich euch kennenzulernen!
Lila