Я пытаюсь понять странное поведение в Python.
У меня есть следующий код Python:
class IntContainer:
listOfInts = []
def __init__(self, initListOfInts):
for i in initListOfInts:
self.listOfInts.append(i)
def printInts(self):
print self.listOfInts
if __name__ == "__main__":
intsGroup1 = [1,2,3,4]
intsGroup2 = [4,5,6,7]
intsGroups = [intsGroup1,intsGroup2]
intsContainers = []
for ig in intsGroups:
newIntContainer = IntContainer(ig)
intsContainers.append(newIntContainer)
for ic in intsContainers:
print ic.listOfInts
Я ожидаю получить что-то вроде:
[1, 2, 3, 4]
[4, 5, 6, 7]
Но я получаю:
[1, 2, 3, 4, 4, 5, 6, 7]
[1, 2, 3, 4, 4, 5, 6, 7]
Мне нужно проверить следующий вопрос:
почему Python повторно использует экземпляр класса внутри функции
И много ссылок на Python, но я не могу понять, что происходит.Я думаю, что это связано с повторным использованием идентификатора newIntContainer
, но я не понимаю его глубоко.
Почему Python, кажется, повторно использовал последнюю ссылку для нового объекта, даже если я добавил его в постоянный список?Что я могу сделать, чтобы устранить это поведение?
Спасибо;)