戦艦を構築しようとしました。私のBoard
クラスの__str__
メソッドは、リストのリストであるself.board
の文字列バージョンを出力します。私はクラスのmake_printable()
メソッドを持っていて、self.board
を素敵でかわいい文字列にしています。Python:私の__str__メソッドは更新されたリストを出力しません
しかし、self.board
のインスタンスがゲーム内で船の配置を反映するように更新された場合、__str__
は更新されたself.board
を表示しません。ここで何が起こっているか考えてみましょうか?
class Board:
"""Docstring for class Board"""
def __init__(self):
self.board = [[EMPTY] * len(range(BOARD_SIZE)) for number in range(BOARD_SIZE)]
self.columns = " " + " ".join([chr(c) for c in range(ord('A'), ord('A') + BOARD_SIZE)])
self.rows = '\n'.join(self.make_printable(self.board))
def make_printable(self, board):
myobj = enumerate(self.board, start=1)
output = []
for index, value in myobj:
output.append(' {:<2} {}'.format(index, ' '.join(value)))
return output
def __str__(self):
return self.columns + '\n' + self.rows
なぜ '__str__'は' self.columns'と 'self.rows'だけを使用するのですか?' self.board'を表示するのはなぜですか?あなたの '__str__'メソッドはあなたの' make_printable'メソッドを使用しません。 – CoryKramer
ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。投稿されたコードはクラス定義のみで、問題を説明するドライバはありません。 – Prune
'__init__'で定義された' self.rows'は 'make_printable()'の結果を含んでいませんか? – empathyattack