类中的变量输出无结果
代码如下,是N皇后问题的解法。但是在调用printall()函数的时候,类中的变量是空,在初始化时候又能够输出结果。不理解为什么。
程序代码:
class Nqueen(object): n = -1 queenlists = [] #空列表 存储总的序列 queenlist = [] #空列表 存储单个满足条件的序列 def __init__(self, N):#构造函数,初始化执行 self.n = N self.solution(N) def solution(self, N): if N == 0: print(self.queenlist) self.queenlists.append(self.queenlist) return for tmp in range(0, self.n): if self.check(N, tmp)== True: self.queenlist.append(tmp) self.solution(N-1) self.queenlist.pop(-1)# 出队列,0是第一个,-1是最后一个,默认-1,类似数组下标 def check(self, N, tail): if N == 0: print('N:0 %s' %(self.queenlist)) return True for tmp in self.queenlist:#行重复 if tmp == tail: return False for tmp in range(0, len(self.queenlist)): if abs(tmp-len(self.queenlist)) == abs(self.queenlist[tmp]-tail): return False return True def printall(self): for tmp in self.queenlists: print(tmp) print(self.queenlists) Nqueen(8).printall() #queens = Nqueen(4) #queens.solution(queens.n) #queens.printall()