为什么实例共享同一列表对象?

时间:2019-07-23 10:44:48

标签: python list class

我为Tower类编写了一个构造函数,该构造函数具有一个列表作为成员。以下是构造函数:

class Tower(object):
  def __init__(self, name, disks=[]):
    self.name = name
    self.disks = disks

我想要实现的目标:

  1. 当未传递disks时,实例列表将被初始化为空列表

  2. 传入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

问题:

  1. 似乎将Tower2和Tower3分配到了相同的空白列表。 disks=[]在构造函数中如何工作?

  2. 当列表是类的成员时,我们通常如何处理这种情况?

0 个答案:

没有答案