类属性受到意外影响

时间:2018-08-05 20:23:46

标签: python recursion

我正在尝试制作河内游戏之塔。当我告诉一个块从一个杆移动到另一个杆时,似乎甚至没有参与移动的杆都受到了影响。在以下示例中,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中。

0 个答案:

没有答案