class Foo:

    def __init__(self, data):
        self._data = data
aa = Foo('aaa')
bb = Foo('bbb')
OldList = [aa, bb]
print(OldList[0]._data)
NewList = OldList[:]
print(NewList[0]._data)
NewList[0]._data = 'xxx'
print(OldList[0]._data)
NewList[0] = Foo('ccc')
print(NewList[0]._data)
print(OldList[0]._data)
Синтаксис фрагмента списка Python используется без очевидной причины