Python 一个列表对象不支持索引,但另一个支持?

Python 一个列表对象不支持索引,但另一个支持?,python,list,object,indexing,Python,List,Object,Indexing,我不熟悉堆栈溢出,正在用python编写这个程序,它应该创建两个不同的游戏板对象:一个小对象和一个大对象。两个游戏板对象都是由列表组成的,因此我可以稍后通过索引访问板上的特定空间。较大的一块板子没有任何明显的错误,但是当我创建小的板子对象并试图通过索引访问它们的特定空间时,我得到了错误“对象不支持索引”。我真的很困惑,因为它与大的板子一起工作,我已经阅读了大量关于这个错误的其他帖子,但他们似乎都发现了对象不是实际列表的错误。然而,我在构造函数中定义,它应该是一个列表。我希望你们能帮忙 下面是这些

我不熟悉堆栈溢出,正在用python编写这个程序,它应该创建两个不同的游戏板对象:一个小对象和一个大对象。两个游戏板对象都是由列表组成的,因此我可以稍后通过索引访问板上的特定空间。较大的一块板子没有任何明显的错误,但是当我创建小的板子对象并试图通过索引访问它们的特定空间时,我得到了错误“对象不支持索引”。我真的很困惑,因为它与大的板子一起工作,我已经阅读了大量关于这个错误的其他帖子,但他们似乎都发现了对象不是实际列表的错误。然而,我在构造函数中定义,它应该是一个列表。我希望你们能帮忙

下面是这些类的代码:

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
当我运行下面的代码时,我得到了一个错误:“在相同的小电路板上 临时板[0]=板[0] TypeError:“SMALLBoard”对象不支持索引”

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

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

提前感谢您的回答!:)

您的方法出现了问题:

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
tempboard
是一个
BIGBoard
,而
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
def相等的小型电路板(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]
返回临时板

应该可以工作。

tempboard
是一个
BIGBoard
,并且
BIGBoard
不支持索引。谢谢!它现在可以工作了,不过我还需要添加boardA、boardB、boardC和boardD的特定字段,以使程序运行时不会出错。