Add a comment here saying that it is because of the what XBlock storages works. Normally in python when you see a =self.b you don't expect a copy, which is normally done by a = self.b.copy().