首页 > 解决方案 > 使用初始参数值python重新启动类

问题描述

我正在尝试做一个类来操作嵌套列表,

a_list = [ a, b, c, d, e, f, g] 将是一个初始参数,然后我将有一些其他方法来操作列表。但是,我需要保留原始列表的副本,以便随时通过调用 restart() 方法将其重新启动到初始阶段,

我试了几次,但没有成功,谁能帮我一把?

class Sample:
    def __init__(self, a_list, count):
        self.__a_list = a_list
        self.__count = 0 
        self.__reset_list = a_list.copy()  

    def restart(self):
        self.__a_list = self.__reset_list
        return

这是一个完整的测试用例,它没有恢复到原始值:

class Sample:
    def __init__(self, a_list, count=0):
        self.__a_list = a_list
        self.__count = 0 
        self.__reset_list = a_list.copy()  
    
    def set_update(self):
        self.__a_list[2][2] = "S"

    def restart(self):
        self.__a_list = self.__reset_list
        return

    def __str__(self):
        result_list = self.__a_list
        result = ''
        for i in range(len(result_list)):
            for j in range(len(result_list[i])):
                result += result_list[i][j] + ' '
            if i < len(result_list) -1: 
                result += '\n'
        return result

    


test = [
    ['*', '*', '*', '*', '*', '*', '*', '*'],
    ['*', ' ', ' ', ' ', ' ', ' ', ' ', ' '],
    ['*', ' ', ' ', '#', 'P', ' ', ' ', '*'],
    ['*', '*', '*', '*', '*', ' ', '#', '*'],
    ['*', 'o', ' ', ' ', ' ', ' ', ' ', '*'],
    ['*', ' ', ' ', ' ', ' ', ' ', 'o', '*'],
    ['*', '*', '*', ' ', '*', '*', '*', '*']
]


a_case =   Sample(test)

print(a_case)

a_case.set_update()

print(a_case)

a_case.restart()

print(a_case)

标签: pythonclass

解决方案


您需要在重新启动时复制列表:

def restart(self):
    self.__a_list = self.__reset_list.copy()

否则__a_list指向与 相同的列表__reset_list,后者将反映对__a_list


推荐阅读