Ich versuche ein Schachspiel zu schreiben, und bekomme den obigen Fehler, wenn ich versuche, meinen Bauern zu bewegen. Mein erster Anruf von my_board[0][0].passive_move()
funktioniert einwandfrei und verschiebt das Objekt korrekt in die zweite Liste. Aber wenn ich es sofort wieder anrufe, bekomme ich den Fehler im Titel, anstatt das Objekt in die dritte Liste zu verschieben.AttributeError: 'str' Objekt hat kein Attribut (Methode)
__author__ = 'admin'
class Pawn:
def __init__(self, y, x):
self.board = my_board
self.y = y
self.x = x
def __str__(self):
return "Pawn"
def passive_move(self):
self.board[self.y+1][self.x] = self
self.board[self.y][self.x] = chr(self.y+65)+str(self.x+1)
self.y += 1
class ChessBoard:
def __init__(self):
self.board = self.create_board
def create_board(self):
game_board = []
letters = ["A", "B", "C", "D", "E", "F", "G", "H"]
for x in range(len(letters)):
game_board.append([])
for y in range(1, 9):
game_board[x].append(str(letters[x])+str(y))
return game_board
if __name__ == "__main__":
my_board = ChessBoard().create_board()
for x in range(len(my_board)):
my_board[0][x] = Pawn(0, x)
my_board[0][0].passive_move()
my_board[0][0].passive_move()
print(my_board)
Sie verstehen, was die zweite Zeile in 'Pawn.passive_move()' tut, richtig? –
Ersetzt es nicht die vorherige Position des Objekts mit der ursprünglichen Koordinate? Zumindest war das meine Absicht. – Perplexityy
... Nein, es injiziert eine Zeichenfolge in die Liste. –