Я пытаюсь создать метод, который позволяет каждому экземпляру класса быть «соседями» друг от друга. Если Entity A добавляет B в качестве соседа, то B находится в A neigh_list. Однако, как видно из приведенного ниже результата, B автоматически добавляется в список соседей B, и это не является желаемым поведением - список соседей B должен быть пустым. Есть предположения?Добавление списка в Python
Выход:
a's neighbor list element: b
b's neighbor list element: b
Код:
class Entities:
neighbor_list = []
name = ''
def __init__(self,name):
self.name = name
def add (self, neighbor):
self.neighbor_list.append(neighbor)
a = Entities ('a')
b = Entities ('b')
a.add(b)
print "a's neighbor list element: %s" % a.neighbor_list[0].name
print "b's neighbor list element: %s" % b.neighbor_list[0].name
Почему вас удивляет, что мутация атрибута класса означает, что все экземпляры могут видеть мутацию? –
@ IgnacioVazquez-Abrams: Вероятно, это его удивляет тем, что 'neighbour_list'_is_ является членом класса, а не членом экземпляра, потому что он предположил, что Python сделал члены точно так же, как, например, Java. – abarnert