python - 类型错误 : 'builtin_function_or_method' object is unsubscriptable

标签 python

当我运行这段代码时,Python 解释器出现了一个奇怪的错误:

def make_map():
    map = [[Tile(0, 0) for col in range(MAP_WIDTH)] for row in range(MAP_HEIGHT)]

    for x in range(MAP_WIDTH):
        for y in range(MAP_HEIGHT):     
            map[x][y].tileType = round((libtcod.noise_perlin(noise2d,[y/MAP_WIDTH,x/MAP_HEIGHT])*100), 0)

它在终端返回这个:

TypeError: 'builtin_function_or_method' object is unsubscriptable 

回溯也指向这个函数:

def render_all():
    global color_light_wall
    global color_light_ground

    #go through all tiles, and set their background color
    for y in range(MAP_HEIGHT):
        for x in range(MAP_WIDTH):
            tileType = map[x][y].tileType
            if tileType>30:
                libtcod.console_set_back(con, x, y, color_dark_wall, libtcod.BKGND_SET )
            else:
                libtcod.console_set_back(con, x, y, color_dark_ground, libtcod.BKGND_SET )

    #draw all objects in the list
    for object in objects:
        object.draw()

    #blit the contents of "con" to the root console
    libtcod.console_blit(con, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0, 0)

我认为它们都与这一行有关:tileType = map[x][y].tileType但如果有人能阐明这一点,我将不胜感激。

谢谢,艾略特博纳维尔

编辑:我忘记包含我的 Tile 类代码和完整的回溯:

class Tile:
    #a tile of the map and its properties
    def __init__(self, tileType, blocked):
        self.tileType = tileType
        self.blocked = blocked

回溯:

  File "kindred.py", line 123, in <module>
    render_all()
  File "kindred.py", line 64, in render_all
    tileType = map[x][y].tileType
TypeError: 'builtin_function_or_method' object is unsubscriptable

最佳答案

此错误意味着 python 尝试在 tileType = map[x][y].tileType 中获取变量名称“map”,但他没有在任何地方找到它,因此它获取构建在函数中 map ,这是不可订阅的,因为它是解释错误消息的内置函数:

TypeError: 'builtin_function_or_method' object is unsubscriptable 

我建议您首先将变量名从“map”更改为任何不隐藏任何内置函数的名称,其次,当您更改变量名时,您应该有一个NameError 错误,因为您的变量未定义,所以您应该修复它。

希望我做对了,希望对您有所帮助:)

关于python - 类型错误 : 'builtin_function_or_method' object is unsubscriptable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5369219/

相关文章:

python - 如何使用 Beautiful Soup 从 HTML 文档中获取纯文本和 URL?

python - 获取索引数组,在另一个数组中找到匹配的索引并替换值

python - 当用户尝试更改对象的值时使用描述符类引发 RuntimeError

Python NetworkX - 为什么图形总是随机旋转?

python - pandas 找到与 df 中的前一行具有相同值的最后一行

python - 使用 Pymc3 的条件概率

python - 将人类可读的时间差(不是时间戳)转换为可用于排序的时间差

python - 在 python opencv 中使用 drawKeypoints 给出错误 : 'module' object has no attribute 'drawKeypoints'

python - 使用不同的步骤创建 numpy 数组

python - 如何使用 Flask 返回相对 URI Location header ?