我正在尝试制作河内游戏之塔。当我告诉一个块从一个杆移动到另一个杆时,似乎甚至没有参与移动的杆都受到了影响。在以下示例中,rod2.content应该为空。为什么不呢?
class Rod:
def __init__(self, content = []):
self.content = content
def add(self, rod):
if not self.content or self.content[-1] > rod.content[-1]:
self.content.append(rod.content[-1])
rod.content.pop()
def __repr__(self):
return str(self.content)
>>> rod1 = Rod([3, 2, 1])
>>> rod2 = Rod()
>>> rod3 = Rod()
>>> rod3.add(rod1)
>>> print('rod1 is', rod1, '\nrod2 is', rod2, '\nrod3 is', rod3)
rod1 is [3, 2]
rod2 is [1]
rod3 is [1]
编辑:我现在了解此法术。显然,默认参数是在函数定义中分配的,并且相同的列表与rod3一样传递到rod2中。