#python #python-3.x #list
#python #python-3.x #Список
Вопрос:
Я пишу скрипт для чтения файла .osu и преобразования его в определенные объекты. Это должно быть сделано несколько раз для каждого «hitobject»
Часть чтения работает нормально, однако добавление объекта является проблемой
При добавлении объекта кажется, что он перезаписывает все существующие элементы в списке. Я не могу понять, почему это происходит.
Я попытался создать список «temp», в котором объекты хранятся в локальном списке вместо списка «self.notes», все та же проблема.
Я считаю, что ошибка возникает в этой части файла:
if hitobjline != -1:
hitobjects = self.file_lines[hitobjline 1:]
for i in hitobjects:
ln = i[:i.find(':')].split(',')
new_note = [NoteType.Circle, NoteType.Hold][int(ln[3] == '128')]
add_note = File.Note
add_note.NoteTypeByte = ln[3]
add_note.Note_Number = int(ln[0])
add_note.Time = int(ln[2])
add_note.NoteType = new_note
add_note.Raw = ln
self.notes.append(add_note)
print(ln, ln[3], ln[3] == '128', new_note, add_note.NoteType)
Для фона файлы .osu имеют синтаксис, подобный: x, y, time, type, hit, end: вещи, о которых мне не нужно беспокоиться
Я ожидал self.notes[0].NoteType
, что вывод будет osureader.NoteType.Hold
таким, как первая строка файла 192,192,410,128,0,2974:0:0:0:0:
(128, указывающая на «Удержание»
Тем не менее, я получаю, osureader.NoteType .Обведите, последняя строка файла.
Комментарии:
1. Возможно, вы можете попробовать
add_note = File.Note.copy()
2. Сделайте self.notes.append(add_note.copy())
3.
add_note.copy()
иadd_note = File.Note.copy()
оба возвращают ошибки атрибута. Любые другие предложения?