python“对象不可调用”尽管在同一代码中的其他地方工作

时间:2018-02-01 14:43:55

标签: python

我有一个名为cell的课程:

class cell:
def __init__(self, row, column, state):
    self.x = column * 20
    self.y = row * 20
    self.state = state

我有一个使用嵌套for循环创建的cells列表:

grid = []
for x in range(20):
    for y in range(20):
        grid.append(cell(x, y, bool(random.getrandbits(1))))

我可以使用cell()毫无问题地将单元格附加到此网格。

稍后,我有一个名为CalculateNextGrid()的子程序,它创建一个单元格列表并将其作为输出返回。

def CalculateNextGrid(grid):
    output = []
    index = 0
    row = 0
    column = 0

    for cell in grid:
        print(grid)
        neighbors = CountCells(index, grid, 20)
        if cell.state == True:
            if neighbors < 2 or neighbors > 3:
                output.append(cell(row, column, False))
                grid.append(cell(x, y, bool(random.getrandbits(1))))
            else:
            output.append(cell(row, column, True))
        else:
            if neighbors == 3:
                output.append(cell(row, column, True))
            else:
                output.append(cell(row, column, False))
        row += 1
        if row == 20:
            row = 0
            column += 1
    return output

当我使用output.append()将单元格添加到列表中时,python会抛出“单元对象不可调用”错误,尽管它早先在代码中工作。这是为什么?

docs

1 个答案:

答案 0 :(得分:3)

下面

channels_first

您使用名称for cell in grid 表示其他内容。在此之后,它不再适用于cell类。

您应该将您的班级名称cell大写,以便它不会与单独的Cell变量冲突。