我对Python还比较陌生,所以我对Python的语法和工作方式并不十分熟悉。我可能误解了,但从我的代码中可以看出这一行:
largeBoard = [[Board() for i in range(3)] for j in range(3)]
正在创建9个对同一个板对象的引用,而不是9个不同的板对象。如何创建9个不同的Board对象?你知道吗
当我跑步时:
largeBoard = [[Board() for i in range(3)] for j in range(3)]
x_or_o = 'x'
largeBoard[1][0].board[0][0] = 'g' # each Board has a board inside that is a list
for i in range(3):
for j in range(3):
for k in range(3):
for l in range(3):
print largeBoard[i][j].board[k][l]
我得到了多个“g”,这就是为什么我认为它们都是对同一个对象的引用。你知道吗
相反:您在那里创建9个独立的
Board
实例。如果你有那么您将只有一个实例。这是许多Python新手犯的一个常见错误的根源。你知道吗
[X for i in range(3)]
对每个i
计算X
一次(这里是3次),而[X] * 3
只计算X
一次。你知道吗我猜这是你的Board类(我可以用这个重现你的错误):
要解决此问题,您需要创建一个
__init__()
函数来初始化电路板,以便每个实例都有自己的电路板:那么你应该只看到一个“g”。Here is the code in ideone that compares the classes.
相关问题 更多 >
编程相关推荐