我正在用 python 創建一個井字游戲。我試圖在我的 Turn 類的類init中的 boardState 物件上從我的 Board 類呼叫 update 方法。當我運行它時,我得到NameError: name boardState is not defined.
class Board:
def __init__(self, player1 = "player1", player2 = "player2"):
self.p1 = player1
self.p2 = player2
self.matrix = MATRIX
self.winner = 'none'
self.available = getAvailable(self.matrix)
def update(self):
clear()
getAvailable(self.matrix)
self.show()
class Turn:
def __init__(self, sym):
self.sym = sym
boardState.update()
terminalState(boardState, self.sym, available)
print(f"{self.sym}'s turn:")
def main():
boardState = Board()
altTurns()
uj5u.com熱心網友回復:
你得到這個錯誤是因為你在參考它之前沒有定義“boardState”,
您需要在使用它之前將其設定為新的板物件
class Board:
def __init__(self, player1 = "player1", player2 = "player2"):
self.p1 = player1
self.p2 = player2
self.matrix = MATRIX
self.winner = 'none'
self.available = getAvailable(self.matrix)
def update(self):
clear()
getAvailable(self.matrix)
self.show()
class Turn:
def __init__(self, sym):
self.sym = sym
boardState = Board() #the line I added
boardState.update()
terminalState(boardState, self.sym, available)
print(f"{self.sym}'s turn:")
這應該可以解決您的問題
uj5u.com熱心網友回復:
如果您希望您的Turn物件可以訪問boardState您在其中創建的物件main()(并main反過來可以訪問 updated boardState),您應該將它作為引數傳遞給所有相關函式訪問它。
我假設它Turn是由創建的altTurns,所以altTurns它本身應該采用一個可以用來創建初始的板物件Turn。
class Turn:
def __init__(self, sym, boardState):
self.sym = sym
boardState.update()
terminalState(boardState, self.sym, available)
print(f"{self.sym}'s turn:")
def altTurns(boardState):
sym = None # or something?
turn = Turn(sym, boardState)
# more turns happen?
def main():
boardState = Board()
altTurns(boardState)
# our boardState has now been updated by Turn()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/483880.html
