我有一个python脚本,该脚本具有应更改数组值的功能。当我直接调用该函数时,它可以正常工作,但是在外部调用时,它只是擦除数组。
附加到特定类的函数;并从另一个班级被调用。我尝试重写代码,但仍然会给出错误。
我尝试过的第一件事:
class Cell:
def __init__(self):
self.candidates = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def remove_candidate(self, value):
try:
self.candidates.remove(value)
except:
pass
class Grid:
def __init__(self):
self.a = Cell()
self.b = Cell()
self.c = Cell()
def remove_candidate(self, value):
for current_cell in [self.a, self.b, self.c]:
current_cell.remove_candidate(value)
然后我尝试将第一个重写为:
class Cell:
def __init__(self):
self.candidates = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def remove_candidate(self, value):
new_candidates = []
for i in self.candidates:
if i != value:
new_candidates.append(i)
self.candidates = new_candidates
对于这两个版本的代码,如果我在单元格中调用该代码,都可以得到预期的结果;从候选数组中删除了单个值。但是,如果我从Grid类中调用它,它将删除数组中的所有值,而不仅仅是一个。
例如:
a = Cell()
a.remove_candidate(3)
导致两种版本的代码都a.candidates
数组按预期变成[1,2,4,5,6,7,8,9]
。
G = Grid()
G.remove_candidates(3)
导致G.a.candidates
数组为[]
,这是错误的。
有什么主意为什么直接调用remove_candidate方法有效,但尝试从Grid类调用却失败了?