Ich habe eine Frage zur Klasse init Funktionen in Python. Ich war durcheinander über den Versuch, ein Text-Adventure-Spiel-Typ-Umgebung zu erstellen, mit jedem Raum mit einem "Elemente" Eigenschaft, als Liste gespeichert. Ich versuchte das folgende:
Klassenzimmer:
def __init__(self,items=[]):
self.items=items
Dabei stelle ich jedoch fest, dass jeder Raum, für den kein Element für die Einleitung definiert wurde, nicht nur eine leere Liste erhält, sondern auch die dieselbe leere Liste. Wenn ich nun eine Reihe von Räumen erstelle und einen Gegenstand an einen von ihnen anhänge, erscheint der Gegenstand in jedem Raum.
Das ist leicht zu beheben (jedem Raum manuell eine leere Liste zuweisen), aber ich verstehe nicht, warum das passiert. Ich könnte mir vorstellen, dass das Anlegen von Raum a eine leere Liste a.items und Raum b eine leere Liste b.items erzeugen würde. Aber kann mir jemand erklären, warum dies identisch sein sollte? Und gibt es eine Möglichkeit, die obige Funktion mit einem Standardwert zu erzeugen, der jedes Mal eine andere Liste erstellt?
Zum Wohl,
Billy.