def solve(self): while not self.is_solved(): previous = self.puzzle[:] print previous self._solve() # Modifies self.puzzle print previous # previous has magically changed!