python - 使用初始参数值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)
解决方案
您需要在重新启动时复制列表:
def restart(self):
self.__a_list = self.__reset_list.copy()
否则__a_list
指向与 相同的列表__reset_list
,后者将反映对__a_list
推荐阅读
- javascript - BS4:用按钮禁用按钮
- delphi - 具有接口约束的泛型函数
- tensorflow - CUDA编程:占用是实现不同进程间GPU切片的方式吗?
- node.js - 在 POST 请求期间正在修改对象的结构
- javascript - 在表单中显示保存的选项
- regex - JSON 代码的正则表达式
- linux - 如何在linux中比较特定格式的日期
- javascript - 为什么我们不能将数据作为 javascript 对象而不是 JSON 对象发送?
- macos - 使用 NumberFormatter 的 minimum 属性对 NSTextField 进行部分和最终验证
- java - 为什么我在 Cloudinary Java 上收到“无效签名”错误?