Я относительно новичок в python (но не в программировании), и я не могу объяснить следующее поведение.Похоже, что переменная (список "children" в моем примере) из одного объекта ("child") перезаписывается значением этой переменной в совершенно другом объекте ("node").Чтобы дать некоторый контекст, я пытаюсь создать простой класс Node для использования в древовидной структуре.У узла есть дочерние элементы и родительский элемент (все остальные узлы).
Я не могу понять, почему child.children получает то же значение, что и node.children.Они как-то ссылаются на одни и те же данные?Зачем?Код и выходные данные выглядят следующим образом:
class Node:
children = []
parent = 0
visited = 0
cost = 0
position = (0, 0)
leaf = 0
def __init__(self, parent, pos):
self.parent = parent
self.position = pos
def addChild(self, node):
self.children += [node]
node = Node(0, (0,0))
child = Node(node, (3,2))
node.addChild(child)
print "node: ",
print node
print "node.childen: ",
print node.children
print "child: ",
print child
print "child.children",
print child.children
Выходные данные:
node: <__main__.Node instance at 0x414b20>
node.childen: [<__main__.Node instance at 0x414b48>]
child: <__main__.Node instance at 0x414b48>
child.children [<__main__.Node instance at 0x414b48>]
Как вы можете видеть, оба файла node.children и child.children имеют одинаковое значение (список, содержащий дочерний элемент), хотяЯ только обновил node.children.Спасибо за любую помощь!