类方法之间的错误,Python编程

时间:2017-08-04 18:03:34

标签: python

computerBoard = self.getComputerBoard(self.newBoard)添加到我的def computerMove中不起作用。它只告诉我:

computerBoard[x][y] = self.board[x][y]
  

TypeError:'NoneType'对象不可订阅

这可能与我在def getComputerBoard中定义的计算机板有关,但我不明白为什么......

class BoardHandler: 
def __init__ (self):
    self.board = None
    self.size = self.askSize()           
    self.newBoard()

def newBoard(self): 
    self.board = [] 
    for i in range(self.size):
        self.board.append([' '] * self.size)

1 个答案:

答案 0 :(得分:1)

newBoard没有返回新主板,只是初始化self.board。所以

computerBoard = self.newBoard()

computerBoard设置为None,并清除self.board中的内容。

您应该更改newBoard,以便返回主板而不是更新self

def newBoard(self): 
    board = [] 
    for i in range(self.size):
        board.append([' '] * self.size)
    return board

或更简单:

def newBoar(self):
    return [[' '] * self.size for i in range(self.size)]

然后更改__init__方法以这种方式使用它:

def __init__(self):
    self.size = self.askSize()
    self.board = self.newBoard()