【发布时间】:2020-10-06 12:21:30
【问题描述】:
我查看了看起来相似但实际上并非如此的问题的解决方案(here、here 和 here)。我仍然无法理解这里发生了什么。
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 变量,当最外层循环在第二次迭代中时,它已经被填充了。但是怎么做?我不应该得到一个新的空对象吗?
我不是在寻找解决问题的方法或获得预期的输出,我知道一些方法。我想了解为什么会得到这个输出。
谢谢!
【问题讨论】:
标签: python-3.x loops oop garbage-collection