Nach dem Ausführen des folgenden Codes erwarte ich, dass hat und s hat. Warum fügt der Code stattdessen File
in sowohlFolder
s ein?Python: Warum werden beide Einträge in der Liste aktualisiert?
Code:
class Folder(object):
# __init__
def __init__(self):
pass
list_of_files = []
class File(object):
# __init__
def __init__(self):
pass
def insert_into_folder(self, folder):
folder.list_of_files.append(self)
def main():
folders = []
folders.append(Folder())
folders.append(Folder())
f = File()
f.insert_into_folder(folders[0])
for folder in folders:
print("Folder {:d} has {:d} file(s)".format(folders.index(folder), len(folder.list_of_files)))
if __name__ == "__main__":
main()
Ausgang:
Folder 0 has 1 file(s)
Folder 1 has 1 file(s)
Process finished with exit code 0
Alle Ordner teilen sich einen einzigen 'list_of_files' untereinander –