我为Tower类编写了一个构造函数,该构造函数具有一个列表作为成员。以下是构造函数:
class Tower(object):
def __init__(self, name, disks=[]):
self.name = name
self.disks = disks
我想要实现的目标:
当未传递disks
时,实例列表将被初始化为空列表
传入disks
时,实例列表将初始化为通过构造函数传入的列表
对于情况2,一切正常,但对于情况1,塔对象共享相同的列表。
这是我运行的代码:
tower1 = Tower("Tower1", ["1"])
tower2 = Tower("Tower2")
tower3 = Tower("Tower3")
print(tower1==tower3)
print(tower1.disks==tower3.disks)
print(tower2==tower3)
print(tower2.disks==tower3.disks)
我得到的结果:
False
False
False
True
问题:
似乎将Tower2和Tower3分配到了相同的空白列表。 disks=[]
在构造函数中如何工作?
当列表是类的成员时,我们通常如何处理这种情况?