Я просмотрел решения вопросов ( здесь , здесь и здесь ), которые выглядят похожими, но не похожими. Я до сих пор не могу понять, что здесь происходит.
class Page:
def __init__(self, l = []):
self.lines = l
def __repr__(self):
return str(self.lines)
class Line:
def __init__(self, string=None):
self.str = string
def __repr__(self):
return str(self.str)
if __name__ == '__main__':
data = [[1, 2, 3], [4, 5, 6]]
pages = []
for row in data:
page = Page()
#print(page)
#print(id(page))
for x in row:
line = Line(str(x))
page.lines.append(line)
pages.append(page)
print('Pages: ', pages)
Ожидаемый ответ:
Pages: [1, 2, 3], [4, 5, 6]
Вместо этого я получаю
Pages: [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]]
Я распечатал переменную page
и вижу, что она уже заполнена когда самый внешний l oop находится на второй итерации. Но как? Разве мне не следует получить новый пустой объект?
Я не ищу способов исправить проблему или получить ожидаемый результат, я знаю несколько способов. Я хочу понять, почему я получаю этот результат.
Спасибо!