Я пытаюсь написать простой код на Python. Я все еще слаб в основах Python и застрял в этом вопросе. У меня есть внутренний узел класса (). У него есть атрибут routeNodes, который является списком. Я использую его для хранения других экземпляров того же объекта класса (Node ()). Поэтому я сначала инициализирую Class firstNode и даю ему несколько фиктивных значений.
Затем я запускаю для l oop в течение 10 итераций. В каждой из итераций я создаю другой экземпляр того же класса Node (). Затем я добавляю объект firstNode (который снова является экземпляром Node ()) к каждому из этих классов secondNode.
Добавляет firstNode в переменную списка routeNode для seconddeNode.
Но он также добавляет объект firstnode в переменную списка routenode своего собственного объекта класса!
Один и тот же объект firstNode добавляется к обоим объектам класса. Почему это происходит? Могу ли я не добавлять объекты класса, как это? и как я могу предотвратить это?
Прикрепление моего кода. Вы можете запустить его в тестовом классе и отладить строку «secondNode.addRouteNodes (firstNode)», и вы поймете мою проблему.
class Node:
kms = 0
cumulativeKms = 0
routeNodes = []
nodeName = ""
def __init__(self, nodeName):
self.nodeName = nodeName
def setNodeName(self, nodeName):
self.nodeName = nodeName
def getNodeName(self):
return self.nodeName
def setKms(self, kms):
self.kms = kms
def getKms(self):
return self.kms
def setCumulativeKms(self, kms):
self.cumulativeKms = self.cumulativeKms + kms
def getCumulativeKms(self):
return self.cumulativeKms
def addRouteNodes(self, nodes):
self.routeNodes.append(nodes)
def getRouteNodes(self):
return self.routeNodes
firstNode = Node("first")
firstNode.setKms(0)
firstNode.setCumulativeKms(0)
for i in range(10):
secondNode = Node('new'+str(i))
secondNode.setKms(10)
secondNode.setCumulativeKms(10)
routes = firstNode.getRouteNodes()
for route in routes:
secondNode.addRouteNodes(route)
secondNode.addRouteNodes(firstNode)
print("Done")