2017-08-01 14 views
-1

私はスタックオーバーフローを初めて経験しました。このプログラムをPythonで作成しています。これは、小さなものと大きなものの2種類のゲームボードオブジェクトを作成するはずです。両方のゲームボードオブジェクトはリストから作られているので、私は後でインデックスを通してボード上の特定のスペースにアクセスできます。大きなボードでは明らかなエラーはありませんが、小さなボードオブジェクトを作成してインデックスを使用して特定のスペースにアクセスしようとすると、「オブジェクトはインデックス作成をサポートしていません」というエラーが表示されます。私は本当に混乱しています、それは大きなボードと一緒に働いたので、私はすでにこのエラーについての他の記事をたくさん読んでいましたが、それらはすべて、実際のリストではないオブジェクトの間違いを見つけるようです。しかし、私はコンストラクタでそれをリストにする必要があると定義します。私はあなたが助けることができることを願っています!1つのリストオブジェクトはインデックス作成をサポートしていませんが、もう1つはインデックス作成をサポートしていますか?

ここではクラスのためのコードです:「equal_small_boards tempboardで[0] = boardA [0] はTypeError: 'SMALLBoard' オブジェクトがない私は、次のコードを実行したとき

import copy 

SMALL_BOARD = [ #one list for small board 
     None, None, None, 
     None, None, None, 
     None, None, None, 
] 

BIG_BOARD = [ #one big list for big board 
    None, None, None, None, None, None, 
    None, None, None, None, None, None, 
    None, None, None, None, None, None, 
    None, None, None, None, None, None, 
    None, None, None, None, None, None, 
    None, None, None, None, None, None, 
] 

class SMALLBoard(): 
     def __init__(self, board=None): 
      if board is None: 
       board = copy.deepcopy(SMALL_BOARD) 
      self.sboard = board 

class BIGBoard(): 
    def __init__(self, bboard=None): 
     if bboard is None: 
      bboard = copy.deepcopy(BIG_BOARD) 
     self.bboard = bboard 

    def equal_small_boards(self, boardA, boardB, boardC, boardD): 
     tempboard=BIGBoard() 
     tempboard[0]= boardA[0] 
     tempboard[3]= boardB[0] 
     tempboard[18]= boardC[0] 
     tempboard[21]= boardD[0] 

     return tempboard 

私はエラーを得ましたインデックス作成をサポートしていません '

bboard = BIGBoard() 
sboardA = SMALLBoard() 
sboardB = SMALLBoard() 
sboardC = SMALLBoard() 
sboardD = SMALLBoard() 

bboard=bboard.equal_small_boards(sboardA, sboardB, sboardC, sboardD) 

お返事ありがとうございます! :)

+2

'tempboard'は' BIGBoard'で、 'BIGBoard'sはインデックス付けをサポートしていません。 –

答えて

1

さて問題は、あなたの方法で発生します

def equal_small_boards(self, boardA, boardB, boardC, boardD): 
    tempboard=BIGBoard() 
    tempboard[0]= boardA[0] 
    tempboard[3]= boardB[0] 
    tempboard[18]= boardC[0] 
    tempboard[21]= boardD[0] 

    return tempboard 

tempboardBIGBoardあり、そしてBIGBoardはインデックスをサポートしていません。 bboardフィールドに書き込みたいと思うかもしれません。したがって:

def equal_small_boards(self, boardA, boardB, boardC, boardD): 
    tempboard = BIGBoard() 
    tempboard.bboard[0] = boardA[0] 
    tempboard.bboard[3] = boardB[0] 
    tempboard.bboard[18] = boardC[0] 
    tempboard.bboard[21] = boardD[0] 

    return tempboard

+0

ありがとう!今は動作しますが、boardA、boardB、boardC、boardDの特定のフィールドを追加して、プログラムをエラーなく実行できるようにする必要もありました。 – user8402175

関連する問題