Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在一个对象上调用类的方法会影响同一类中的另一个对象_Python_Class - Fatal编程技术网

Python 在一个对象上调用类的方法会影响同一类中的另一个对象

Python 在一个对象上调用类的方法会影响同一类中的另一个对象,python,class,Python,Class,可能重复: 下面是我构建一个名为Neuron的类的代码: class Neuron(): def __init__(self,connection=[]): self.connection=connection def makeConnection(self,other): self.connection.append(other) def getConnection(self): return self.connection 正如您所看到的

可能重复:

下面是我构建一个名为Neuron的类的代码:

class Neuron():
  def __init__(self,connection=[]):
      self.connection=connection
  def makeConnection(self,other):
      self.connection.append(other)
  def getConnection(self):
      return self.connection
正如您所看到的,该类的每个对象都有它自己与同一类的其他对象的连接。现在我建立了一组神经元:

P=[]
for i in range(5):
   P.append(Neuron())
现在,我想在我的神经元之间建立联系:让我们做一些简单的事情:

 P[1].makeConnection(P[2])
现在,当我签入python时:

 P[2].getConnection()
它在它的连接列表中给了我p[2]!我刚刚在P[1]上应用了makeConnection方法,在地球上我将P[2]连接到了它自己!?!请有人帮忙

变化

def __init__(self, connection=[]):
      self.connection = connection


否则,所有对象都会引用同一个列表。当你改变一个神经元的连接时,所有其他神经元也会改变。

你没有阅读上一个问题结束时包含的链接吗?请不要打开内容完全相同的副本。对不起,我以为我的问题与此无关,但现在我明白你的观点了,伙计。。。!哇!太棒了!我想不出来!但是为什么connection=[]并不意味着空列表。我原以为它会为每个对象创建一个新的空列表……我知道哪里出了问题,但现在我很困惑!:)谢谢大家!@Sun:定义函数时,它会创建一个新列表,并不断重复使用该列表。它不会在每次调用该函数时都生成一个新的列表。@Sun:花两分钟阅读我们链接到您的问题也会为您解决这个问题。
def __init__(self, connection=None):
      if connection is None:
          connection = []
      self.connection = connection